Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизTComponent & "read","write" Найти похожие ветки
← →
Stas_on © (2004-09-21 19:58) [0]Господа, как в классе(наследник TComponent"a) правильно
задать массив типа Record"a, и как нужно задавать ему
"read" & "write" чтобы потом можно было его сохранить в файл.
Пр.:
Tiles = (sea,earth,stone,...);
fTitle = record
a: array[1..9] of tiles;
b: string;
c: Integer;
end;
Some : class(TComponent)
protected
N : String;
publishing
property массив[1..9] of fTitle read ?? write ??
//что нужно писать?
end;
← →
Defunct © (2004-09-21 20:00) [1]Propery Title[Index: Integer]:TTitleRec Read GetTitleRec Write SetTitleRec
← →
Stas_on © (2004-09-21 20:02) [2]Что(и где )должно быть в Get... и Set...?
← →
Defunct © (2004-09-21 20:07) [3]Stas_on © (21.09.04 20:02) [2]
TSomeClass : class(TComponent)
Private
...
Procedure SetTitleRec(Index: Integer; ATitle: TTitleRec);
Function GetTitleRec(Index: Integer): TTitleRec;
...
Published
[1]
End;
← →
Stas_on © (2004-09-21 20:08) [4]Спаибо!
← →
VMcL © (2004-09-21 20:08) [5]>>Stas_on © (21.09.04 19:58)
property Title[Index: Integer]: TTitleRec
Ctrl+Shift+C
← →
Stas_on © (2004-09-23 19:12) [6]1)При попытке компиляции
Пишет -->
[Error] SaveClass.pas(35): Published property "Title" cannot
be of type ARRAY
(35):
property Tiles[Index: Integer]: fTiles read GetTypes write SetTypes;
fTiles = record
x,y : Integer;
s : String;
Tile : array [1..9] of Tiles;
End;
Может что ни так делаю.
Есть ли у кого законченный пример?
Если нужна какая-то информация - пишите.
2)Кто нибудь знает, что нужно писать в Get...(...) & Set...(...)?
Прошу показательный пример(если не трудно)!
← →
jack128 © (2004-09-23 19:42) [7]Stas_on © (23.09.04 19:12) [6]
Error] SaveClass.pas(35): Published property "Title" cannot
be of type ARRAY
перениси его в секцю public
> 2)Кто нибудь знает, что нужно писать в Get...(...) &
>Set...(...)?
> Прошу показательный пример(если не трудно)!
смотри в исходниках VCL
← →
Defunct © (2004-09-23 19:44) [8]А обязательно это свойство делать Published?
Сделайте
Public
[1]
← →
GrayFace © (2004-09-23 19:58) [9]Ну не по-человечески это - называть тип с буквы f.
Делай так:TTitle = record .....
fTitles:array[0..9] of TTitle;
GetTitle(i:integer):TTitle;
SetTitle(i:integer; v:TTitle);
public // не published
property Titles[i: Integer]: fTitles read GetTitle write SetTitle;
implementation
GetTitle(i:integer):TTitle;
Result:=fTitles[i];
SetTitle
fTitles[i]:=v;
← →
Stas_on © (2004-09-24 12:38) [10]Public не сохраняется в файл!
← →
jack128 © (2004-09-24 12:49) [11]Stas_on © (24.09.04 12:38) [10]
естественно. Перекрой DefineProperties (если мы говорим о стандартных методах сохронения компонентов)
← →
Stas_on © (2004-09-24 13:51) [12]> jack128 © (24.09.04 12:49) [11]
Я чего-то о таких не слышал!
Где их искать-то?
← →
Basken (2004-09-24 13:58) [13]
> Stas_on © (24.09.04 13:51) [12]
Посмотри в TPersistent...
← →
Stas_on © (2004-09-24 14:03) [14]Как их перекрыть?
← →
Basken (2004-09-24 15:57) [15]Есть статейка на rsdn http://rsdn.ru/article/delphi/serialization.xml
И в исходниках можна посмотреть как перекрывается DefineProperties...
← →
jack128 © (2004-09-24 21:43) [16]Stas_on © (24.09.04 13:51) [12]
TStream.Read/WriteComponent/ TFiler/TReader/TWriter + F1 хотя ИМХО в1 тут мало помогает. Более менее начинаешь представлять как это все работает только после анализа исходников. (естественно знание rtti необходимо ;-) )
← →
jack128 © (2004-09-24 21:48) [17]хотя ИМХО F1 тут
← →
GrayFace © (2004-09-28 14:20) [18]А че такое rtti?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c