![]() |
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:
Nun möchte ich aus der Unit1 (Formular heißt Form1) diese Prozedur aufrufen. Ich habe diese Prozedur als Public in der Unit2 deklariert:
procedure TFSicherung.Sicherung;
begin ShowMessage('bla'); end;
Delphi-Quellcode:
Nun müßte es nach meinem Kenntnisstand eigentlich problemlos möglich sein, diese Prozedur aus Unit1 mit:
....
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;
Delphi-Quellcode:
aufzurufen. Ich bekomme aber immer die Meldung: "Undefinierter Bezeichner 'Sicherung'.
FSicherung.Sicherung;
In Unit1 steht auch:
Delphi-Quellcode:
Könnt Ihr mir helfen?
implementation
uses Unit2; Ulrich |
Sieht so aus, als sei FSicherung keine Instanz von deinem 2. Formular. Sollte sonst gehen.
|
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 |
Ich hoffe mein Beispiel erklärt eine Instanz ein wenig:
Delphi-Quellcode:
Wichtig wäre auch zu wissen ob die Formulare bei dir automatisch erstellt werden (Projektoptionen). Mein Beispiel ist ein manuelles erzeugen :party:
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; |
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. |
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 07:40 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-2025 by Thomas Breitkreuz