Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Вниз

Не хочет вызываться нужный конструктор класса   Найти похожие ветки 

 
Мирон ©   (2005-03-01 00:44) [0]

Есть такое дело:

...
TAboutDocument = class(TDocument)
private
 FList: TList;
public
 constructor Creare; override;
 property List: TList read FList;
end;

TDocumentClass = class of TDocument;
...

TRegime = class(TObject)
private
...
 FDocument: TDocument;
 function DocumentClass: TDocumentClass; virtual; abstract;
...
public
 constructor Create;
end;

TAboutRegime = class(TRegime)
...
 function DocumentClass: TDocumentClass; override;
...
end;

constructor TAboutDocument.Create;
begin
 inherited;
 FList := TList.Create;
end;

constructor TRegime.Create;
begin
 inherited;
 FDocument := DocumentClass.Create;
 ...
end;

function TAboutRegime.DocumentClass: THTMLDocumentClass;
begin
 Result := TAboutDocument;
end;


Так вот, во время TAboutRegime.Create при выполнении строки FDocument := DocumentClass.Create;  конструктор TAboutDocument не выполнятеся вообще... Хотя после этой строки FDocument <> nil, но в то же время FDocument.List = nil... Не пойму, почему такое твориться...


 
Димон   (2005-03-01 00:48) [1]

ты не опечатался
creare или create?


 
Мирон ©   (2005-03-01 00:51) [2]

Димон   (01.03.05 0:48) [1]
опечатался... Create...


 
Мирон ©   (2005-03-01 00:52) [3]

блин, и внизу...

читать правильно

function TAboutRegime.DocumentClass: TDocumentClass;
begin
Result := TAboutDocument;
end;


 
Юрий Зотов ©   (2005-03-01 01:48) [4]

Вот так все работает. Практически то же самое, что и у Вас, (только немного причесано), поэтому в чем причина - непонятно. Вероятно, в том коде, который не приведен.

type
 TDocument = class
   constructor Create; virtual;
 end;

 TDocumentClass = class of TDocument;

 TAboutDocument = class(TDocument)
 private
   FList: TList;
 public
   constructor Create; override;
   destructor Destroy; override;
   property List: TList read FList;
 end;

 TRegime = class
 private
   FDocument: TDocument;
 protected
   class function DocumentClass: TDocumentClass; virtual; abstract;
 public
   constructor Create;
   destructor Destroy; override;
 end;

 TAboutRegime = class(TRegime)
 protected
   class function DocumentClass: TDocumentClass; override;
 end;

 TForm1 = class(TForm)
   procedure FormClick(Sender: TObject);
 end;

{ TDocument }

constructor TDocument.Create;
begin
 inherited Create
end;

{ TAboutDocument }

constructor TAboutDocument.Create;
begin
 inherited;
 FList := Tlist.Create
end;

destructor TAboutDocument.Destroy;
begin
 FList.Free;
 inherited
end;

{ TRegime }

constructor TRegime.Create;
begin
 inherited;
 FDocument := DocumentClass.Create;
end;

destructor TRegime.Destroy;
begin
 FDocument.Free;
 inherited
end;

{ TAboutRegime }

class function TAboutRegime.DocumentClass: TDocumentClass;
begin
 Result := TAboutDocument
end;

{ TForm1 }

procedure TForm1.FormClick(Sender: TObject);
begin
 TAboutRegime.Create.Free
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.048 c
1-1109574458
hgd
2005-02-28 10:07
2005.03.13
О знаке разделителе


6-1104840240
Bork
2005-01-04 15:04
2005.03.13
как скачать файл по http?


1-1109759071
Pietro
2005-03-02 13:24
2005.03.13
копирование файлов в буфер обмена


8-1100687392
Viktop
2004-11-17 13:29
2005.03.13
Как повернуть изображение


14-1108800498
kaZaNoVa
2005-02-19 11:08
2005.03.13
Сжатие контента, экономия траффика





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