Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Null в строке


Страницы:   1 2 3

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]

Что за БД?


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо