powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Cache и строки C#
4 сообщений из 4, страница 1 из 1
Cache и строки C#
    #34956956
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго здравия всем участникам.
Натолкнулся на такой момент:
Имею классный метод Каше принимающий %String. Внутри проводим какие-либо манипуляции с этой строкой.
Код: plaintext
1.
2.
3.
ClassMethod SomeClassMethod(Arg At %String){
if Arg="" q
if $L(Arg)= 0  q
}
Фокус начинается когда вызываю этот метод с пустой строкой в параметре, т.е.
Код: plaintext
SomeClassMethod("");
Пустая строка в С# обозначается одним символом "\0" (конец строки). Каше умудряется схавать его и обе проверки в методе не проходят: первая, т.к. объект не нуль, вторая, т.к. длина не ноль, а 1 (для строки с одним символом длина тоже 1).
Нашел выход:
Код: plaintext
if $A(Arg)= 0  q
Может кто-то сталкивался с подобным. Правильно ли я понял ситуацию или есть другие способы?
...
Рейтинг: 0 / 0
Cache и строки C#
    #34964178
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, в СУБД пустая строка и значение null - это разные вещи, по-крайней мере в Cache SQL.
Попробуйте выполнить:

Код: plaintext
1.
insert into test(name) values('')   --$lb("",$c(0))
insert into test(name) values(null) --$lb("","")
и увидите разницу.

Так что все в порядке в C# и Cache со строками. Как вариант передавайте null вместо "".
...
Рейтинг: 0 / 0
Cache и строки C#
    #34970477
Грин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В вашем сообщении нет ответа на вопрос. В целом вопрос звучит примерно так: как определить в Cache COS строку нулевой длины?
Я представляцию себе разницу между null и "". Эта разница присутствует и в С#, и в COS, и в Cache SQL.
Я передаю именно строку с пустым содержанием, а не пустое содержание вместо строки. Значение для строки берется с контрола на форме, а это значит, что строка не null всегда. Можно поставить условие проверить на "" и делать другой вызов функции с параметром null. Но дело в том, что у функции три параметра и все могут быть пустыми строками. А следовательно надо будет реализовать вместо одного - 6 условий. Городить в коде необоснованные этажи считаю не красиво как минимум...
...
Рейтинг: 0 / 0
Cache и строки C#
    #34970527
NoGot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю единственный выход из данной ситуации - это ваше второе условие, только я написал бы его так:

Код: plaintext
q:(Arg=$c( 0 ))

:)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Cache и строки C#
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]