Главная страница
    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.04 c
15-1154246296
Ega23
2006-07-30 11:58
2006.09.10
С Днём рождения! 30 июля


15-1155885857
tesseract
2006-08-18 11:24
2006.09.10
До выхода turbo delphi осталось :


3-1151101359
makvell
2006-06-24 02:22
2006.09.10
Вставка картинки в BLOB


15-1155485958
elDog
2006-08-13 20:19
2006.09.10
ZLIB


15-1155808965
sleept
2006-08-17 14:02
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский