Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Create probleme (https://www.delphipraxis.net/29383-create-probleme.html)

day 8. Sep 2004 14:12


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.

Dax 8. Sep 2004 14:14

Re: Create probleme
 
Wenn fTemp auch als TGUIController deklarierst, MUSS es gehen.

jfheins 8. Sep 2004 14:22

Re: Create probleme
 
Wie wärs damit ?
Delphi-Quellcode:
procedure TMainFrame.FormCreate(Sender: TObject);
var
 mTemp, mController: TGuiController;
begin
  mTemp := TGuiController.Create(self); //hier tritt der fehler auf
  mController := TGuiController.Create(mTemp);
end;
Statt self (bzw. mTemp) im Create kannste auch mal nil probieren

day 8. Sep 2004 14:35

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?

Gruber_Hans_12345 8. Sep 2004 14:41

Re: Create probleme
 
Zitat:

Zitat von day
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?

Was bekommst du für eine Fehlermeldung ?

Beim Compilieren oder zur Laufzeit ?

Ups ... gerade gesehen, das die Fehlermeldung eh oben steht ....

Kannst due den Create Teile (deklaration) deiner Klasse posten ?

day 8. Sep 2004 14:46

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.

Chewie 8. Sep 2004 14:48

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.

Gruber_Hans_12345 8. Sep 2004 14:48

Re: Create probleme
 
Zitat:

Zitat von day
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.

der Konstruktor muss auch als Konstruktor definiert werden !

Delphi-Quellcode:
 public
    constructor create();
Gruss Hans

Spezi1980 8. Sep 2004 14:52

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;

day 8. Sep 2004 15:01

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 07:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz