Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

Инициализация объектов   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2006.09.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.034 c
2-1155804709
UMU
2006-08-17 12:51
2006.09.10
Вычесть дату


15-1156081068
vain
2006-08-20 17:37
2006.09.10
Я нормальный или нет?


2-1155831546
pvi
2006-08-17 20:19
2006.09.10
Сетевая папка или нет


2-1155997184
viktoras
2006-08-19 18:19
2006.09.10
Поиск слов по шаблону


15-1155833944
чучу
2006-08-17 20:59
2006.09.10
Кнопки в Firefox