![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
record`ы
vassal © (2012-03-16 09:06:00)Нужно задать значения по умолчанию полям записи:
type TTableRow = record
Operation,
PlaceInd,
PlaceOPC,
Attrib:String[255];
empty,
error:boolean;
end;
Можно ли это сделать при объявлении типа, или нужно писать обработчик OnCreate? Как?(покажите пожалуйста на примере)
CRLF (2012-03-16 19:05:00) [1]Прикольно... Даже не знал, что можно часть полей в типизированной константе оставить неинициализированными.
begin...end (2012-03-16 18:13:00) [2]const
ConstRow: TTableRow =
(Operation: 'всё будет хорошо'; Attrib: 'и даже ещё лучше'; Empty: True; Error: False);
var
Row: TTableRow;
begin
// установка значений полей по умолчанию
Row := ConstRow;
// установка значений других полей
Row.PlaceInd := ...;
end
vassal (2012-03-16 17:56:00) [3]Так и думал что дело в работе с памятью. Спасибо.
CRLF (2012-03-16 17:44:00) [4]вкратце, потому, что освобождать память должен тот, кто её выделил.
vassal (2012-03-16 11:44:00) [5]Спасибо!
А почему
> С функциями, возвращающими значения структурированного типа,
> надо быть осторожным.
?
CRLF (2012-03-16 11:27:00) [6]В последних версиях делфи можно record'у сделать конструктор.
> Row:=InitTableRow;
Лучше InitTableRow(var ARow: TTableRow). С функциями, возвращающими значения структурированного типа, надо быть осторожным.
vassal (2012-03-16 11:14:00) [7]Можно ли сделать OnCreate для своего типа (record), чтобы писать:
Row:=TTableRow.Create;
или лучше/проще написать функцию для присвоения дефолтных значений:
Row:=InitTableRow;
Dimka Maslov (2012-03-16 09:36:00) [8]При объявлении типа нельзя. Только при объявлении переменной.