Главная страница
    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.45 MB
Время: 0.043 c
15-1155800785
Сергей М.
2006-08-17 11:46
2006.09.10
Непонятка при работе в связке Access2003 + MS VisualFoxPro ODBC


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


2-1156019143
Silver...
2006-08-20 00:25
2006.09.10
Нужна помощь/подсказка


3-1152082799
ttt_111
2006-07-05 10:59
2006.09.10
Некорректное завершение программы.


3-1151305951
MsGuns
2006-06-26 11:12
2006.09.10
Определить список серверов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский