AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Probleme beim Aufrufen einer Prozedur in einer anderen Unit
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme beim Aufrufen einer Prozedur in einer anderen Unit

Ein Thema von ustra · begonnen am 18. Mär 2003 · letzter Beitrag vom 18. Mär 2003
Antwort Antwort
ustra

Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
 
Delphi 5 Professional
 
#1

Probleme beim Aufrufen einer Prozedur in einer anderen Unit

  Alt 18. Mär 2003, 11:39
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:

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
Ulrich Strauer
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#2
  Alt 18. Mär 2003, 12:03
Sieht so aus, als sei FSicherung keine Instanz von deinem 2. Formular. Sollte sonst gehen.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
ustra

Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
 
Delphi 5 Professional
 
#3

VErstehe ich noch nicht so ganz

  Alt 18. Mär 2003, 12:23
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
Ulrich Strauer
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#4
  Alt 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
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
ustra

Registriert seit: 12. Mär 2003
Ort: Geesthacht
138 Beiträge
 
Delphi 5 Professional
 
#5

Einen Schritt weiter

  Alt 18. Mär 2003, 13:25
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.
Ulrich Strauer
  Mit Zitat antworten Zitat
Touchdown

Registriert seit: 17. Feb 2003
227 Beiträge
 
#6
  Alt 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.
function getallfornothing: TGoldesel;
begin
result := TGoldesel.create;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 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