Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme beim Aufrufen einer Prozedur in einer anderen Unit (https://www.delphipraxis.net/3545-probleme-beim-aufrufen-einer-prozedur-einer-anderen-unit.html)

ustra 18. Mär 2003 11:39


Probleme beim Aufrufen einer Prozedur in einer anderen Unit
 
Hallo,

ich habe ein Delphi-Projekt mit 2 Units (Unit1, Unit2). In Unit2 habe ich eine Prozedur (Formular heißt FSicherung):

Delphi-Quellcode:
procedure TFSicherung.Sicherung;
begin
  ShowMessage('bla');
end;
Nun möchte ich aus der Unit1 (Formular heißt Form1) diese Prozedur aufrufen. Ich habe diese Prozedur als Public in der Unit2 deklariert:

Delphi-Quellcode:
  ....
    BManuell: TButton;
    procedure FormCreate(Sender: TObject);
    procedure TAutoTimer(Sender: TObject);
    procedure TWartenTimer(Sender: TObject);
    procedure BManuellClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure Sicherung;
  end;
Nun müßte es nach meinem Kenntnisstand eigentlich problemlos möglich sein, diese Prozedur aus Unit1 mit:

Delphi-Quellcode:
FSicherung.Sicherung;
aufzurufen. Ich bekomme aber immer die Meldung: "Undefinierter Bezeichner 'Sicherung'.

In Unit1 steht auch:

Delphi-Quellcode:
implementation

uses Unit2;
Könnt Ihr mir helfen?

Ulrich

Touchdown 18. Mär 2003 12:03

Sieht so aus, als sei FSicherung keine Instanz von deinem 2. Formular. Sollte sonst gehen.

ustra 18. Mär 2003 12:23

VErstehe ich noch nicht so ganz
 
Hi,

danke für Deine Antwort. Eins verstehe ich leider noch nicht so ganz. Wo muss ich das einfügen? In dem Moment, wo ich die Prozedur aufrufen will oder muss ich das bei onCreate machen?

Ulrich

Touchdown 18. Mär 2003 13:00

Ich hoffe mein Beispiel erklärt eine Instanz ein wenig:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Instanz : TForm2; // Unit 2 muss hierfür man einusen, sonst ist TForm2 unbekannt
begin
  Instanz := TForm2.create( Application ); //TForm2 ist der Bauplan eines Fensters und Instanz ist nun ein Fenster
  Instanz.Sicherung; // vorraussetung: sicherung ist public
end;
Wichtig wäre auch zu wissen ob die Formulare bei dir automatisch erstellt werden (Projektoptionen). Mein Beispiel ist ein manuelles erzeugen :party:

ustra 18. Mär 2003 13:25

Einen Schritt weiter
 
So,

nun meckert er nicht mehr, dass er die Prozedur nicht mehr kennt. Jetzt gibt er die Meldung aus "Name not Unique in this context".

Was nun? Die VAriable Instanz ist einmalig. Die Meldung erscheint, wenn die Instanz erzeugt wird.

Ich habe die Formulare normal über Datei/Neues Formular hinzugefügt.

Ulrich

PS: Ich geh jetzt weg. Ich kann erst morgen an meinem Projekt weiter arbeiten.

Touchdown 18. Mär 2003 13:34

Wahrscheinlich ist das Formular per automatische Erstellung bereits im Speicher. Einfach unter Projekt/Optionen/Formulare rauswerfen. Nicht benötigte Instanzen haben nichts im Speicher verloren, sowas muss man selber machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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