![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Null в строке
AndreyAR © (2006-01-18 09:03:00)Всем доброго времени суток.
Проблема в следующем: в строковом поле забиты строчки с символом #0. При попытке взять значение AsString возвращается пустая строка (размер 0), если же брать AsVariant, размер ненулевой. Как преобразовать Variant в String, заменив #0, например, пробелами, сохранив остальные символы?
Заранее спасибо всем, кто ответит.
evvcom (2006-01-18 09:38:00) [41]
> inttostr(sizeof(asd)));
> т.е. вариант размером 16
А кто тебе сказал, что SizeOf - это длина строки в варианте? Правильно, это размер, который занимает сама переменная типа Variant, но не строка.
AndreyAR (2006-01-18 09:37:00) [42]
> Если да, то как ты себе представляешь признак конца содержимого
> поля типа varchar ?
Ну, во-первых, не совсем varchar. И ODBC его нормально возвращает (прога на Fox Pro например прекрасно работает, с тем же драйвером).
Во-вторых вопрос в другом. Как преобразовать переменную Variant в string, заменив #0 на #32. Т.е. при преобразовании Variant получается скажем набор байтов 00 32 45 65. Надо сделать 32 32 45 65?
Johnmen (2006-01-18 09:29:00) [43]Т.е. я правильно понял, что нужно получить строковое значение независимо от содержимого?
Если да, то как ты себе представляешь признак конца содержимого поля типа varchar ?
AndreyAR (2006-01-18 09:22:00) [44]БД "замечательная".
Pervasive SQL 2000i (раньше называлась Btrieve). Тип поля - Variable length note (240). Использую связку ADO + Merant ODBC Driver for Btrieve.
Ну дело в общем-то не в БД, может, даже и не в этот форум надо было писать :). Как Variant поле берется, вопрос как потом преобразовать в стринг.
Я у себя написал:
var asd: variant;
s1: string;
...
asd:=fieldbyname('f_note').AsVariant;
s1:=VarToStr(asd);
showmessage(inttostr(length(s1))+' '+inttostr(sizeof(asd)));
Выдается 0 16, т.е. вариант размером 16, преобразованный в стринг - 0. Причем доподлинно известно, что первый символ в строке #0.
Johnmen (2006-01-18 09:10:00) [45]Что за БД?