![]() |
Eigene Procedure aufrufen
Hallo,
ich habe eine eigene Procedure gemacht in dem ich einfach:
Delphi-Quellcode:
geschrieben habe.
procedure menue;
begin end; Jetzt will ich die procedure aufruffen indem ich in eine andere procedure geschrieben habe:
Delphi-Quellcode:
leider kommt der fehler:
menue;
[Fehler] Unit1.pas(454): Undefinierter Bezeichner: 'menue' was muss ich da definieren? ist sonst noch was falsch? |
Re: Eigene Procedure aufrufen
Hoi
Schreib die Deklaration vor den Aufruf. Gruss Shaman |
Re: Eigene Procedure aufrufen
Hi Ferdinand,
entweder du deklarierst die Prozedur im interface-Teil als forward
Delphi-Quellcode:
oder du deklarierst die Funktion vor der Funktion, in der du sie aufrufst.
procedure menue; forward;
Greetz alcaeus |
Re: Eigene Procedure aufrufen
hast du deine procedure als global sprich vor der implementation deklariert?
|
Re: Eigene Procedure aufrufen
Moin Ferby,
Prozedur und Aufruf stehen in der gleichen Unit: Die Prozedur muss vor dem Aufruf implementiert, oder aber im Interface Abschnitt der Unit angegeben werden. Beide stehen in Unterschiedlichen Units: Die Prozedur muss im Interface Abschnitt der Unit angegeben werden, in der sie implementiert wurde. Die Unit die die Prozedur enthält muss in einer der Uses Anweisungen stehen, in der die Prozedur aufgerufen werden soll. In Deinem Beispiel sollte hier die Angabe in der Uses Anweisung im Implementation Abschnitt genügen. |
Re: Eigene Procedure aufrufen
Hi Daniel,
Zitat:
Greetz alcaeus [add] Ich hab nur die halbe Wahrheit gesagt. Falls die beiden Prozeduren in unterschiedlichen Units stehen, beachte Christians Tipps ;) [/add] |
Re: Eigene Procedure aufrufen
Hallo,
ich habe ein paar sachen ausprobiert aber ich habe es nicht hin bekommen. kannst du mir ein programm beispiel geben wo eine eigene procedure aufgerufen wird? |
Re: Eigene Procedure aufrufen
Hi Ferdinand,
Zitat:
Delphi-Quellcode:
Nur als Beispiel.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin MeineProzedur; //dies funktioniert nicht end; procedure MeineProzedur; begin Showmessage('Hallo'); end; procedure TForm1.Button2Click(Sender: TObject); begin MeineProzedur; //dies funktioniert end; end. Greetz alcaeus |
Re: Eigene Procedure aufrufen
So zum Beispiel:
Delphi-Quellcode:
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure HalloWelt; private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.HalloWelt; begin showmessage('Hallo Welt'); end; procedure TForm1.Button1Click(Sender: TObject); begin hallowelt; end; end. |
Re: Eigene Procedure aufrufen
öhm das mit dem forward muss mir mal erlären, dass kenn ich noch gar net, finde auch in der Hilfe nix dazu :)
kenne das nur so *hoffe das is richtig*
Delphi-Quellcode:
unit MainUnit;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, StdCtrls, ExtCtrls; type TForm1 = class(TForm) procedure test; //Hierrein gehts... Was das dann ist ka ^^ private { Private-Deklarationen } procedure test; //Hierrein gehts... ist dann ne private Procedure (kann man nur in der Unit benutzen) public { Public-Deklarationen } procedure test; //Hierrein gehts... ist dann ne public Procedure (kann man auch in anderen Units benutzen) end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.test; begin //da wär sie ^^ end; procedure TForm1.FormCreate(Sender: TObject); begin test; // Hier rufen wir sie auf :) end; end. Alles richtig erklärt? Vielleicht kann mir auch wer die Zeile "//Hierrein gehts... Was das dann ist ka ^^" erklären, dann hab ich meine wissenslücken geschlossen ^^ Ich tu sie eigendlich immer in public oder private rein... Edit: To Late :) MFG Keda |
Re: Eigene Procedure aufrufen
hallo,
danke! |
Re: Eigene Procedure aufrufen
Zitat:
|
Re: Eigene Procedure aufrufen
@ Kedariodakon:
äh, verstehe ich das richtig? in der published oder private nenne ich nur die function oder procedure als würde ich sie aufrufen, und im implementation-teil schreibe ich dann die prozedur mit allen einzelheiten auf und irgendwann rufe ich sie dann tatsächlich auf wenn ich sie brache??? also im grunde bezieht sich meine frage eigentlich nur auf den ersten part meiner langen frage... (??? alles klar? ich bin nun verwirrt von dem was ich frage?) ;o) Danke schon mal. Gruß Leon. |
Re: Eigene Procedure aufrufen
Hi Leon,
Zitat:
Noch kurz ein Beispiel:
Delphi-Quellcode:
Ich hoffe das klärt dein Problem..
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } function FooBar(Foo: Integer): Integer; //Deklaration public { Public declarations } end; implementation; function TForm1.FooBar(Foo: Integer): Integer; //Implementation, dabei Klassenname nicht vergessen begin //Code end; procedure Button1Click(Sender: TObject); begin //Aufruf: FooBar(5); end; Greetz alcaeus |
Re: Eigene Procedure aufrufen
:-D Joooooo, danke.
nun habe ich nur noch ein verständigungsprob zum theme function...: function FooBar(Foo: Integer): Integer; warum 2 mal integer? wie liest man das denn nun wieder. ich werde aus der OH nicht wirklich schlau. Also ich verstehe das soweit. die function heißt FooBar. Die Variable Foo ist eine integer und liefert irgend einen integerwert nach durcharbeitung der function wieder zurück... oder? was aber bitte bedeutet das zweite integer? das die function ein integer ist??? wenn ja, warum das denn??? sorry, wenn ich so dämlich frage... |
Re: Eigene Procedure aufrufen
Hi Leon,
also, die Funktion heißt FooBar, und erwartet einen Integer-Parameter. So weit, so gut. Das zweite Integer ist der Ergebnistyp der Funktion, er muss nicht Integer sein, könnte auch Single, String, TDateTime oder irgendetwas sein. Dies kommt dann auf den Verwendungszweck der Funktion an. Greetz alcaeus |
Re: Eigene Procedure aufrufen
Hai Leon de Bar,
hier mal eine Funktion die es dir eventuell einfach macht es zu verstehen:
Delphi-Quellcode:
function ADDInteger(a,b: Integer): Integer;
begin result := a + b; end; |
Re: Eigene Procedure aufrufen
ahaaaa, danke leute. nun ist licht in meinem dunkel... thx!!!
|
Re: Eigene Procedure aufrufen
Zitat:
ich habe nun meine proceduren geschrieben... funzt auch super AAAAABEEEEEEEEEEER: Mein programm sieht vor nun (die procedure erzeugt eine neue ACCESS-DB) dass ein neues Form aufgeht in dem ich einmalig die Startparameter erfasse. Wenn ich nun Form2.showmedal; schreibe bekomme ich einen Speicherfehler :?: Wie rufe ich denn nun das 2. Form auf??? Leon. |
Re: Eigene Procedure aufrufen
Hi Leon,
erstellt doch bitte ein eigenes Thema zu deinem Problem, da dein Problem wirklich nichts mit dem Ursprungsthema des Threads gemeinsam hat. Greetz alcaeus |
Re: Eigene Procedure aufrufen
Sicher, dass es das Form2 schon gibt? Ist es dynamisch? Rufst du vielleicht Showmodal vor dem Create des Form2 auf?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:10 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