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, например, пробелами, сохранив остальные символы?

Заранее спасибо всем, кто ответит.


AndreyAR   (2006-01-18 15:49:00) [1]


> А как же "Сделал выборку с использованием API первазива
> - все просто "летает"."?


Так ведь, батенька, я одну таблицу переделал, а их во-о-он сколько :)


Плохиш   (2006-01-18 15:44:00) [2]


> AndreyAR   (18.01.06 14:33) [43]

Мыло - мачало, начинай всё с начала :-(
А как же "Сделал выборку с использованием API первазива - все просто "летает"."?

PS. Что-то скушно мне в этой ветке.


AndreyAR   (2006-01-18 14:33:00) [3]


> :-) да мне по фиг, да и автору я смотрю тоже.


:-) Я даже внимательно не вчитывался.

Вообще, надо разобраться с ODBC+ADO, потому что делать выгрузку каждой таблицы средствами API весьма долго и утомительно, а час моей работы стоит хоть и не 30 евро, но все же... :)


Johnmen   (2006-01-18 13:54:00) [4]

>Плохиш ©   (18.01.06 13:40) [40]

Да, с ГетДата вполне м.получиться...


evvcom   (2006-01-18 13:53:00) [5]


> час моей работы стоит ...

Ух, ты! И де это? :?)


Плохиш   (2006-01-18 13:40:00) [6]


> Johnmen ©   (18.01.06 13:35) [39]

:-) да мне по фиг, да и автору я смотрю тоже.
Отправил пост и вспомнил про GetData.


Johnmen   (2006-01-18 13:35:00) [7]

>Плохиш ©   (18.01.06 13:14) [35]

Иде я?
Идея не пройдёт...:)
Т.к. ключевые моменты (sizeof(myVar), myVar[lCount]) не "соотносятся" с действительностью..


AndreyAR   (2006-01-18 13:29:00) [8]


> Надеюсь идея понятна?


интересная идея, жаль, не пригодится :)


AndreyAR   (2006-01-18 13:26:00) [9]


> Пробуй TBinaryField, TBytesField...


Не хочу уже. Сделал выборку с использованием API первазива - все просто "летает".

Остальным "мастерам" спасибо за "помощь". :))


Плохиш   (2006-01-18 13:17:00) [10]

А ещё лучше прочитать про метод GetDataкласса TField?


Плохиш   (2006-01-18 13:14:00) [11]


> AndreyAR   (18.01.06 11:57) [29]

var
 myVar: Variant;
 lCount: Integer;
 str: String;
begin
 myVar := FieldByName('f_note').Value;
 for lCount := 0 to sizeof(myVar) - 1 do
   if myVar[lCount] = 0 then myVar[lCount] := 32;
 str := myVar;
end;

Надеюсь идея понятна?


Виталий Панасенко   (2006-01-18 12:51:00) [12]


> Johnmen ©   (18.01.06 12:20) [33]
> Пробуй TBinaryField, TBytesField...

А че пробовать ? В дизайнере полей создать поля и глянуть тип созданного поля


Johnmen   (2006-01-18 12:20:00) [13]

Пробуй TBinaryField, TBytesField...


AndreyAR   (2006-01-18 12:18:00) [14]


> выбери из таблицы записи, у которых это занятное поле IS
> NULL (select * from table_name where field is null) и глянь,
>  а не попала ли туда, случайно, запись, которую ты сейчас
> обсуждаешь.. Если да, то ...


Делать такой селект достаточно долго, таблица большая (это во-первых), во-вторых, where нормально отрабатывает (с приемлимой скоростью), если я точно попадаю в индексы Btriev-a (т.е. в where входят все поля, указанные в индексе).


Виталий Панасенко   (2006-01-18 12:07:00) [15]

выбери из таблицы записи, у которых это занятное поле IS NULL (select * from table_name where field is null) и глянь, а не попала ли туда, случайно, запись, которую ты сейчас обсуждаешь.. Если да, то ...


AndreyAR   (2006-01-18 12:00:00) [16]


> понятно...
> действительно понятно, операторы TOP xxx, ограничения по
> WHERE xxx автору пожоже неизвестны... и пишет он похоже
> используя рабочую базу...


Ну конечно неизвестны, в нашей церковно-приходской школе о таком не упоминали!

> чтож, не будем мешать, флаг тебе в руки.
Всего Вам.


AndreyAR   (2006-01-18 11:57:00) [17]


> Пора бы про строки нулём заканчивающиеся почитать.
> У тебё в поле хранится не строка а набор байт(символов)
> (в терминах делфи это называется динамический массив, про
> них то же пора бы почитать), вот и обрабатывай как массив
> символов.
> За определённую оплату я готов сделать эту работу за тебя,
>  но учти, что час моей работы стоит 30 Евро + налоги + непредвиденные
> расходы.

если раскажешь, как заполнить массив байтами из этого поля, я тебе перешлю 30 Евро. Серьезно.

Пока что на
TBlobField(FieldByName('f_note')).SaveToFile('c:\str.txt');
пишет "Invalid Typecast".


Плохиш   (2006-01-18 11:54:00) [18]


> Johnmen ©   (18.01.06 11:46) [26]
> + соцпакет + трёхразовый харч + медстрах полис кремлёвки
> :)))

С выездом, транспортные расходы + суточные входят в непредвиденные расходы.
А за напоминае про страховки спасибо :-)


Виталий Панасенко   (2006-01-18 11:47:00) [19]


> AndreyAR   (18.01.06 10:52) [17]
>
> > А в поле действительно что-то есть ?
>
> Есть, есть, не сомневайтесь :)).
> Null в смысле символ с ASCII-кодом 0. СУБД писалась задолго
> до появления винды, а там такое возможно.

А при чем тут Винда ? задолго до Винды были Unix, NetWare.. И почему не допускается такой вариант, что уже тогда было понятие "пусто"("не определено" точнее)? А то, как это значение реализовано.. В Paradox для Numeric/Currency полей используется специальное значение Double - NAN (Not A Numeric), для Short - -32768, Long Integer/Date - -2147483648, строка - "". и все это при просмотре в HEX будет отображаться соответсвующими байтами(а Short/LongInt/Date вообще обычное число, отрицательное)...Так что, да там что-то есть.. Но это "что-то" сигнализирует системе(СУБД) "ЗНАЧЕНИЕ НЕ ОПРЕДЕЛЕНО" (Null)


Johnmen   (2006-01-18 11:46:00) [20]

+ соцпакет + трёхразовый харч + медстрах полис кремлёвки
:)))


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

Наверх

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