Форум: "KOL";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизИнициализация объектов Найти похожие ветки
← →
homm © (2005-11-20 14:47) [0]Имею объект
TGRushData = object(TObj)
fPSDef: TPaintState;
fPSOver: TPaintState;
...
end;
и вот такую константу...
DefGRushData: TGRushData = (
fPSDef: (
ColorFrom: clWhite;
ColorTo: $D1beaf;
...
fResultNeedUpdate: TRUE;
);
Раньше TGRushData был RECORD, и инициализировался так
var Data: PGRushData;
begin
GetMem(Data, Sizeof(TGRushData));
Move(DefGRushData, Data^ , Sizeof(TGRushData));
Но теперь есть острая необходимость именно в объекте.
Извратится с Move мне так и не удалось, а этот код...
var Data: PGRushData;
begin
New(Data, Create(AControl));
Data^ := DefGRushData;
... вызывает внутренюю ошибку компиляции. Может кто знает как
проинициализировать Объект нужными значениями, не присваивая каждое.
← →
Thaddy (2005-11-20 21:50) [1]You are using Tobj as base. This already contains fields, so it points wrong in your code.
Also:
Did you actually write a constructor that takes aControl as parameter? Only Tcontrol has one, not Tobj!
Your code should work if you derive from object, not object(Tobj)!
PTest = ^ TTest;
TTest = object
a,b:integer;
end;
var Test:PTest;
New(Test);
......
Will work as you expect.
← →
homm © (2005-11-20 22:37) [2]
> This already contains fields, so it points wrong in your
> code.
А ведб точно, совсем забыл о такой "мелочи".
> Did you actually write a constructor that takes aControl
> as parameter?
А по другому то как он такой вызов скомпилит?
New(Data, Create(AControl));
> Your code should work if you derive from object, not object(Tobj)!
Неа, все-же TObj нужен (это для CustomObj).
Я это дело так организовал:TGRushFake = record
fPSDef: TPaintState;
fPSOver: TPaintState;
...
DefGRushData: TGRushFake = (
fPSDef: (
ColorFrom: clWhite;
...
New(Result, Create(AControl));
Move(DefGRushData, Result.fPSDef , Sizeof(TGRushFake));
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.04 c