Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.039 c
4-1147542569
Dstr
2006-05-13 21:49
2006.09.10
Правый клик


1-1153486310
Untermensch
2006-07-21 16:51
2006.09.10
А есть ли встроенные в Delphi функции шифрования, и где их искать


15-1156156747
TJulia
2006-08-21 14:39
2006.09.10
Документы на английском языке


2-1156019232
md
2006-08-20 00:27
2006.09.10
обработка событий


3-1152192063
mefisto
2006-07-06 17:21
2006.09.10
"Наглядный" SQL Запрос : )





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский