Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigene Procedure aufrufen (https://www.delphipraxis.net/30167-eigene-procedure-aufrufen.html)

ferby 21. Sep 2004 15:55


Eigene Procedure aufrufen
 
Hallo,

ich habe eine eigene Procedure gemacht in dem ich einfach:

Delphi-Quellcode:
procedure menue;
begin
end;
geschrieben habe.

Jetzt will ich die procedure aufruffen indem ich in eine andere procedure geschrieben habe:

Delphi-Quellcode:
menue;
leider kommt der fehler:

[Fehler] Unit1.pas(454): Undefinierter Bezeichner: 'menue'


was muss ich da definieren? ist sonst noch was falsch?

Shaman 21. Sep 2004 15:57

Re: Eigene Procedure aufrufen
 
Hoi

Schreib die Deklaration vor den Aufruf.

Gruss
Shaman

alcaeus 21. Sep 2004 15:58

Re: Eigene Procedure aufrufen
 
Hi Ferdinand,

entweder du deklarierst die Prozedur im interface-Teil als forward
Delphi-Quellcode:
procedure menue; forward;
oder du deklarierst die Funktion vor der Funktion, in der du sie aufrufst.

Greetz
alcaeus

static_cast 21. Sep 2004 16:00

Re: Eigene Procedure aufrufen
 
hast du deine procedure als global sprich vor der implementation deklariert?

Christian Seehase 21. Sep 2004 16:02

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.

alcaeus 21. Sep 2004 16:02

Re: Eigene Procedure aufrufen
 
Hi Daniel,

Zitat:

Zitat von static_cast
hast du deine procedure als global sprich vor der implementation deklariert?

das muss man nicht unbedingt. Wichtig ist, dass sie irgendwie vor dem Aufruf deklariert wurde. Ob mit forward oder ganz normal nach implementation ist egal. Wichtig ist, dass sie deklariert wurde.

Greetz
alcaeus

[add]
Ich hab nur die halbe Wahrheit gesagt. Falls die beiden Prozeduren in unterschiedlichen Units stehen, beachte Christians Tipps ;)
[/add]

ferby 21. Sep 2004 16:03

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?

alcaeus 21. Sep 2004 16:05

Re: Eigene Procedure aufrufen
 
Hi Ferdinand,

Zitat:

Zitat von ferby
kannst du mir ein programm beispiel geben wo eine eigene procedure aufgerufen wird?

Delphi-Quellcode:
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.
Nur als Beispiel.

Greetz
alcaeus

Nikolas 21. Sep 2004 16:06

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.

Kedariodakon 21. Sep 2004 16:14

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

ferby 21. Sep 2004 16:15

Re: Eigene Procedure aufrufen
 
hallo,

danke!

jfheins 21. Sep 2004 16:16

Re: Eigene Procedure aufrufen
 
Zitat:

//Hierrein gehts... Was das dann ist ka ^^
Dürfte published sein ...

Leon de Bar 10. Okt 2004 11:02

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.

alcaeus 10. Okt 2004 11:42

Re: Eigene Procedure aufrufen
 
Hi Leon,

Zitat:

Zitat von Leon de Bar
ä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???

im private oder public-Teil wird die Prozedur deklariert. Dort steht noch kein Code für die Prozedur. Irgendwo nach dem implementation wird sie dann implementiert, d.h. der Code für die Routine wird geschrieben. Dort ist aber wichtig, vor dem namen der Funktion den Klassennamen gefolgt von einem Punkt zu schreiben. Aufrufen kannst du sie anschließend wieder ganz normal.
Noch kurz ein Beispiel:
Delphi-Quellcode:
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;
Ich hoffe das klärt dein Problem..

Greetz
alcaeus

Leon de Bar 10. Okt 2004 16:18

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...

alcaeus 10. Okt 2004 16:20

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

Sharky 10. Okt 2004 16:28

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;

Leon de Bar 10. Okt 2004 20:13

Re: Eigene Procedure aufrufen
 
ahaaaa, danke leute. nun ist licht in meinem dunkel... thx!!!

Leon de Bar 11. Okt 2004 19:51

Re: Eigene Procedure aufrufen
 
Zitat:

Zitat von Leon de Bar
ahaaaa, danke leute. nun ist licht in meinem dunkel... thx!!!

*sprach er und verstummte wieder :pale: *

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.

alcaeus 11. Okt 2004 19:53

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

Nikolas 11. Okt 2004 19:54

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