![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятное поведение строк [D7, WinXP]
Woolen © (2005-11-03 14:52:00)В этом коде AsString возвращает все, что должен. В моем случае строку длинной 45 символов, но после где-то ~90 таких строк в QueryTxt начинает попадать всякая чушь. Ни ',', ни зачения из AsString больше там не появляется. В дельфи переодически помогают танцы с бубнами, но ни предварительная очистка, ни перенос переменной в глобальные не помогает.
Сейчас у меня создалось ощущение, что при превышении 4096 символов строку начинает глючить, хотя QueryTxt - это обычный string, который по документации обязан содержать 2 ГБ символов. В общем, я уже не знаю, что думаьб. Помогите, если кто в курсе. Спасибо
if DocContFilled or DocTextFilled then
begin
QueryTxt := 'QQQ in (' + FieldByName('QQQ').AsString;
Next;
while not Eof do
begin
QueryTxt := QueryTxt + ',' + FieldByName('QQQ').AsString;
Next;
end;
QueryTxt := QueryTxt + ')';
Amoeba (2005-11-03 18:59:00) [1]
> FieldByName('QQQ').AsString на NULL
Замечание относится лишь к тому что AsString имеет тип String, а не Variant и не может принимать значение NULL. Следовательно AsString можно проверить лищь на '', а если нужно на Null - то проверять AsVariant. Не надо "путать Бабеля с Бебелем".
Ольга (2005-11-03 17:04:00) [2]Так и я об этом. В данной конструкции запроса это критично.
Amoeba (2005-11-03 16:33:00) [3]
> Ольга (03.11.05 16:17) [11]
> Не помешало бы проверять FieldByName('QQQ').AsString на
> NULL
Если NULL, то AsString покажет '', т.е. пустую строку.
Ольга (2005-11-03 16:17:00) [4]Не помешало бы проверять FieldByName('QQQ').AsString на NULL
Leonid Troyanovsky (2005-11-03 16:15:00) [5]
> Digitman © (03.11.05 15:40) [9]
> нехилые у тебя "запросы" - по 4к и более) ... что ж за запросы-
> то такие ? прямо монстры какие-то) ...
http://groups.google.com/group/fido7.ru.delphi.db/msg/73690ec3d4363922
--
Regards, LVT.
Digitman (2005-11-03 15:40:00) [6]
> Какие варианты есть, кроме ShowMessage?
например, записать содержимое строки в файл и впоследствии анализировать его любым текст.редактором
с другой стороны, если речь идет (как я понял) о динамически формируемых текстах сиквэл-запросов, то на ту беду в многих пакетах компонентов доступа к СУБД есть компоненты а-ля SQLMonitor, позволяющие перехватывать тексты SQL-предложений непосредственно перд их отправкой СУБД-серверу
> при отправке запроса
нехилые у тебя "запросы" - по 4к и более) ... что ж за запросы-то такие ? прямо монстры какие-то) ...
ничего личного, просто любопытно ..
erika (2005-11-03 15:29:00) [7]MessageDLG
Woolen (2005-11-03 15:27:00) [8]
> да, это известный "глюк" встроенного отладчика
>
> не обращай внимания, содержимое строки на самом деле то
> самое, что ты и ожидаешь
Спасибо.
Тогда возникает еще одна проблема: при отправке запроса в другую систему, она матерится и мне надо посмотреть содержимое этой строки (она и является параметрами запроса). Какие варианты есть, кроме ShowMessage?
Гаврила (2005-11-03 15:23:00) [9]
> Какая смета?
Это я не то из буфферап вставил, сорри ))
Woolen (2005-11-03 15:21:00) [10]Какая смета?
Digitman (2005-11-03 15:17:00) [11]
> при превышении 4096 символов строку начинает глючить
да, это известный "глюк" встроенного отладчика
не обращай внимания, содержимое строки на самом деле то самое, что ты и ожидаешь
Гаврила (2005-11-03 15:08:00) [12]Удалено модератором
Woolen (2005-11-03 15:05:00) [13]Я, наверное, не достаточно хорошо объяснил. Я не ищу там символов, я их туда кладу, а они там не появляются. Вместо них появляется вся, что угодно, только не то, что надо.
erika (2005-11-03 14:57:00) [14]попробуй отсекать все запятые и по средством pos переходить на следующий символ, как вариант, возможно и не лучший