![]() |
Create probleme
Hallo
Ich bekomme folgende fehlermeldung: This form of method call only allowed for class methods wieso geht das nicht?
Code:
uses
Windows, ClientMain, StdCtrls; type TMainFrame = class(TForm) procedure FormCreate(Sender: TObject); private mClientMain : TClientUnit; mTemp : TObject; public end; var MainFrame: TMainFrame; implementation uses GuiController; var mController :TGuiController; {$R *.DFM} procedure TMainFrame.FormCreate(Sender: TObject); begin mTemp := TGuiController.Create(self); //hier tritt der fehler auf mController := TGuiController(mTemp); end; end. |
Re: Create probleme
Wenn fTemp auch als TGUIController deklarierst, MUSS es gehen.
|
Re: Create probleme
Wie wärs damit ?
Delphi-Quellcode:
Statt self (bzw. mTemp) im Create kannste auch mal nil probieren
procedure TMainFrame.FormCreate(Sender: TObject);
var mTemp, mController: TGuiController; begin mTemp := TGuiController.Create(self); //hier tritt der fehler auf mController := TGuiController.Create(mTemp); end; |
Re: Create probleme
TGuiControl ist eine klasse die ich selbst geschrieben habe und die create methode braucht einen übergabe parameter (nil geht nicht).
mTemp kann ich nicht als TGuiController deklarieren, da diese Klasse zu dem Zeitpunkt noch nicht bekannt ist. Ich verstehe die Fehlermeldung nicht ganz? |
Re: Create probleme
Zitat:
Beim Compilieren oder zur Laufzeit ? Ups ... gerade gesehen, das die Fehlermeldung eh oben steht .... Kannst due den Create Teile (deklaration) deiner Klasse posten ? |
Re: Create probleme
Hallo
Ich konnte den Fehler eingrenzen. Es liegt am Konstruktor meiner TGuiControll klasse. und zwar wenn ich keinen Konstruktor habe dann funktioniert es und wenn ich einen eigenen habe dann geht es nicht. wie muss ich den konstruktor definieren damit es geht?
Code:
unit GuiController;
interface uses CommandHandler, OffertInformationContainer, Command; type TGuiController = class(TObject) private mCommandHandler : TCommandHandler; mOffertInfoContainer : TInfoContainer; public procedure create(); procedure ActivateNewOffertView(NewOffertFrame: TNewOffertFrame); end; implementation procedure TGuiController.create(); begin mCommandHandler := TCommandHandler.Create(); mOffertInfoContainer := TInfoContainer.Create(); end; procedure TGuiController.ActivateNewOffertView(NewOffertFrame: TNewOffertFrame); begin end; end. |
Re: Create probleme
Wenn create der Konstruktor sein soll, wovon ich ausgehe, dann muss dieser auch als solcher mittels dem Schlüsselwort constructor deklariert werden und nicht mit procedure.
|
Re: Create probleme
Zitat:
Delphi-Quellcode:
Gruss Hans
public
constructor create(); |
Re: Create probleme
Ich persöhnlich würde zur Sicherheit auch noch ein inherited im Constructor aufrufen.
Delphi-Quellcode:
constructor TGuiController.create();
begin inherited Create; mCommandHandler := TCommandHandler.Create(); mOffertInfoContainer := TInfoContainer.Create(); end; |
Re: Create probleme
Hallo
Ich brauche dringend eine Pause. :wall: Habe ich voll übersehen. Danke für die Hilfe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz