Главная страница
    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.045 c
1-1109491464
BVV
2005-02-27 11:04
2005.03.13
Принудительное завершение работы потоков


6-1105213067
Alexander Makhanev
2005-01-08 22:37
2005.03.13
Как узнать, находится ли комп в домене?


3-1108198090
Troiki
2005-02-12 11:48
2005.03.13
Ошибка ADOQuery


14-1108901620
kaZaNoVa
2005-02-20 15:13
2005.03.13
PHP-качалка сайтов


4-1106898466
Jetus
2005-01-28 10:47
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский