Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Prozedur lässt sich net aufrufen. (https://www.delphipraxis.net/134551-prozedur-laesst-sich-net-aufrufen.html)

ChristianR 24. Mai 2009 19:23


Prozedur lässt sich net aufrufen.
 
Gute Abend,
Ich habe ein kleine Prozeduren problem...ich will innerhalb einer von mir geschriebenen Prozedur eine andere procedur aufrufen...leider klappt das nicht. Ich bekomme immer die Meldung : "Undefinierter Bezeichner :spielstarten"... nun meine frage : Was mache ich falsch? ich hoffe mir kann jemand helfen :)


Delphi-Quellcode:
procedure gewinner;
begin
if spielerdran = 9 then
  begin
    ShowMessage('Unentschieden!');
    ZeroMemory(@ergebnis,SizeOf(ergebnis));
  end;
if (ergebnis[1,1] = 'X') and (ergebnis [2,1]= 'X') and (ergebnis[3,1] = 'X') or
   (ergebnis[1,2] = 'X') and (ergebnis [2,2]= 'X') and (ergebnis[3,2] = 'X') or
   (ergebnis[1,3] = 'X') and (ergebnis [2,3]= 'X') and (ergebnis[3,3] = 'X') or
   (ergebnis[1,1] = 'X') and (ergebnis [1,2]= 'X') and (ergebnis[1,3] = 'X') or
   (ergebnis[2,1] = 'X') and (ergebnis [2,2]= 'X') and (ergebnis[2,3] = 'X') or
   (ergebnis[3,1] = 'X') and (ergebnis [3,2]= 'X') and (ergebnis[3,3] = 'X') or
   (ergebnis[1,1] = 'X') and (ergebnis [2,2]= 'X') and (ergebnis[3,3] = 'X') or
   (ergebnis[1,3] = 'X') and (ergebnis [2,2]= 'X') and (ergebnis[3,1] = 'X') then
  begin
    //ShowMessage(namespieler1 + ' gewinnt die Runde!');
    spieler1_spielstand := spieler1_spielstand+1;
    ZeroMemory(@ergebnis,SizeOf(ergebnis));
    if Application.MessageBox('Wollen Sie nocheinmal spielen?', 'Spieler 1 gewinnt die Runde!!', MB_ICONINFORMATION or MB_YESNO) = IDYES then
    begin
      spielstarten;

    end;

    if Application.MessageBox('Wollen Sie nocheinmal spielen?', 'Spieler 1 gewinnt die Runde!!', MB_ICONINFORMATION or MB_YESNO) = IDNO then
    begin
      Form1.Close;
    end;

  end;
Hier Soll wenn bei der MsgBox auf Ja geklickt wird die procedure spielstarten aufgerufen werden.


Delphi-Quellcode:
procedure spielstarten;
begin
spielerdran := 0;
Form1.lbl_spieler1.Caption := inttostr(spieler1_spielstand);
Form1.lbl_spieler2.Caption := inttostr(spieler2_spielstand);
if (Form1.lbl_spieler1.Caption = '0') and (Form1.lbl_spieler2.Caption ='0') then
begin
namespieler1 := InputBox('Name Spieler1', 'Geben Sie bitte Ihren Namen ein!','Spieler1');
namespieler2 := InputBox('Name Spieler2', 'Geben Sie bitte Ihren Namen ein!','Spieler2');
end;

Form1.Panel1.Caption := '';
Form1.Panel2.Caption := '';
Form1.Panel3.Caption := '';
Form1.Panel4.Caption := '';
Form1.Panel5.Caption := '';
Form1.Panel6.Caption := '';
Form1.Panel7.Caption := '';
Form1.Panel8.Caption := '';
Form1.Panel9.Caption := '';
Form1.Panel1.Visible := true;
Form1.Panel2.Visible := true;
Form1.Panel3.Visible := true;
Form1.Panel4.Visible := true;
Form1.Panel5.Visible := true;
Form1.Panel6.Visible := true;
Form1.Panel7.Visible := true;
Form1.Panel8.Visible := true;
Form1.Panel9.Visible := true;
Form1.Panel1.Enabled := true;
Form1.Panel2.Enabled := true;
Form1.Panel3.Enabled := true;
Form1.Panel4.Enabled := true;
Form1.Panel5.Enabled := true;
Form1.Panel6.Enabled := true;
Form1.Panel7.Enabled := true;
Form1.Panel8.Enabled := true;
Form1.Panel9.Enabled := true;
Form1.Label2.Caption := (namespieler1 + ' ist an der Reihe');
Form1.Label3.Caption := namespieler1;
Form1.Label5.Caption := namespieler2;
end;
Danke für eure Hilfe!

mkinzler 24. Mai 2009 19:34

Re: Prozedur lässt sich net aufrufen.
 
Ist alles in der selben unit deklariert?

jaenicke 24. Mai 2009 19:39

Re: Prozedur lässt sich net aufrufen.
 
Du musst entweder die Prozedur oberhalb der Stelle deklarieren, wo du sie verwendest oder sie als Methode deines Formulars deklarieren.
Delphi-Quellcode:
procedure Test;
begin

end;

procedure UseTest;
begin
  Test;
end;
Oder:
Delphi-Quellcode:
type
  TFormX = class(TForm)
  ...
  private
    procedure Test;
    procedure UseTest;
  end;

...

implementation

procedure TFormX.UseTest;
begin
  Test;
end;

procedure TFormX.Test;
begin

end;

himitsu 24. Mai 2009 19:40

Re: Prozedur lässt sich net aufrufen.
 
Zitat:

Zitat von mkinzler
Ist alles in der selben unit deklariert?

Und ist spielstarten VOR gewinner definiert?

Anonymos 24. Mai 2009 19:48

Re: Prozedur lässt sich net aufrufen.
 
Falls die Prozedur nicht in der gleichen Unit definiert ist, muss du diese in die Uses einbinden und den Prototyp der Prozedur als Kopf deklarieren.

Delphi-Quellcode:
procedure xy();

implementation

...

procedure xy();
begin
  // Was auch immer drin stehen soll
end;
Funktioniert übrigens auch, wenn diese Prozedur in der gleichen Unit, allerdings unterhalb der Aufruffunktion steht

mfg

ChristianR 24. Mai 2009 19:54

Re: Prozedur lässt sich net aufrufen.
 
danke leute...jetzt funktioniert es


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