Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизRecord + PString Найти похожие ветки
← →
tmpfolder (2006-10-29 17:04) [0]Совсем что-то я дурак. Есть:
TmpRec = record
tmp1: PString;
tmp2: PString;
...
end;
Потом где-то использую эту запись:
new(*.tmp1);
*.tmp1 := "hi!";
и передаю переменную в другую функцию, в которой нужно проверить заполненность некоторых полей.
т.е
if *.tmp1 <> nil then
но это работает в любом случае, т. даже если я не делаю new для переменной PString.
Работает кажется вот так: if @*.tmp1^ <> nil then ...
В чем дело? Я совсем дебил, не пойму почему так...
← →
tmpfolder (2006-10-29 17:25) [1]Последний вариант тоже не работает.. что не так?
← →
MikePetrichenko © (2006-10-29 17:31) [2]
> TmpRec = record
> tmp1: PString;
> tmp2: PString;
> ...
> end;
Вот это сильно!
Такого я еще не видел (нет, видел конечно, но смысл?)
А почему не указатель на таблицу указателей на функции?
← →
tmpfolder (2006-10-29 17:38) [3]Тогда я расскажу что меня заставило совершить такое.
Есть рекорд с некоторыми данными из разряда: имя, фамилия, отчество, улица дом машина, квартира, огород. И этот рекорд должен заполняться этими данными, но вдруг у кого-то не окажется машины или огорода, что тогда делать? (вариант присваивать пустое значение не годится) А заполненный этими данными рекорд уходит ещё дальше, где на одном этапе проверяется заполненность и записываются заполненные элементы рекорда куда нибудь. Что делать?
← →
Джо © (2006-10-29 17:39) [4]Господи, дружище, объясни, пожалуйста, зачем это нужно-то?!
← →
Anatoly Podgoretsky © (2006-10-29 17:41) [5]> Ответ на сообщение [3]
> вариант присваивать пустое значение не годится
А вот для string такой вариант штатный
← →
Percent (2006-10-29 18:16) [6]но это работает в любом случае, т. даже если я не делаю new для переменной PString
Ну уж если заставила нужда поступить таким образом, то хотя бы выделяй память для записи с инициализацией памяти нулями, типа:
MyRec := AllocMem(SizeOf(MyRec^));
Ну, или инициализируй запись нулями с помощью FillChar();
Иначе там мусор, который потом "<> nil"...
← →
DiamondShark © (2006-10-29 18:40) [7]Если я правильно понял, косвенность введена только для отличия состояний "пустая строка" и "никакая строка"?
Тогда введи ещё булевские поля флагов "не заполнено", или битовый набор.
Вё лучше, чем совершенно лишние манипуляции с динамическим выделением.
← →
Percent (2006-10-29 18:48) [8]Если я правильно понял, косвенность введена только для отличия состояний "пустая строка" и "никакая строка"?
Насколько я его понял, ему надо значение NULL. То есть, насколько я понимаю, тов. ВременнаяПапка изобретает свой собственный неповторимый формат хранения данных, придуманный еще на заре эры программирования - типизированный файл. То есть, он чем-то некоего TIF"а напоминает (мелькал тут такой ник); тот тоже "пишет свою СУБД, когда есть необходимость".
← →
sniknik © (2006-10-29 18:52) [9]> для отличия состояний "пустая строка" и "никакая строка"
лучше тогда локальный рекордсет(ADODataset например) с полями типа стринг, там и пустые строки и записи типа null возможны, + еще сортировки всякие, сохранение/запись автоматизирована и т.д. неизвестно что нужно, боремся как всегда с проблемой реализации а не решаем задачу...
← →
Джо © (2006-10-29 18:53) [10]В крайнем случае, не лучше ли использовать Variants? У них есть состояние Null. А если "машина", "квартира" представляют из себя отдельные сущности не завести ли для них отдельные классы?
← →
sniknik © (2006-10-29 18:55) [11]> То есть, он чем-то некоего TIF"а напоминает (мелькал тут такой ник); тот тоже "пишет свою СУБД
угу, чемто похоже.
← →
MikePetrichenko © (2006-10-29 19:13) [12]Мдя... Каждый, конечно, сходит с ума по своему... Да и задачи разные бывают, но чтобы самого себя в петлю загонять...
Суицид какой-то.
Если уж так необходима проверка на NULL (nil) (хотя хоть убей не могу понять чем не устроили пустая строка), то пользуйся pchar.
P.S. Господа, ну хватит измываться над языком. Сколько можно.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.049 c