AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Prozedur lässt sich net aufrufen.
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur lässt sich net aufrufen.

Ein Thema von ChristianR · begonnen am 24. Mai 2009 · letzter Beitrag vom 24. Mai 2009
Antwort Antwort
ChristianR

Registriert seit: 4. Mai 2009
22 Beiträge
 
#1

Prozedur lässt sich net aufrufen.

  Alt 24. Mai 2009, 19:23
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!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Prozedur lässt sich net aufrufen.

  Alt 24. Mai 2009, 19:34
Ist alles in der selben unit deklariert?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.359 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Prozedur lässt sich net aufrufen.

  Alt 24. Mai 2009, 19:39
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;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#4

Re: Prozedur lässt sich net aufrufen.

  Alt 24. Mai 2009, 19:40
Zitat von mkinzler:
Ist alles in der selben unit deklariert?
Und ist spielstarten VOR gewinner definiert?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Anonymos
(Gast)

n/a Beiträge
 
#5

Re: Prozedur lässt sich net aufrufen.

  Alt 24. Mai 2009, 19:48
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
  Mit Zitat antworten Zitat
ChristianR

Registriert seit: 4. Mai 2009
22 Beiträge
 
#6

Re: Prozedur lässt sich net aufrufen.

  Alt 24. Mai 2009, 19:54
danke leute...jetzt funktioniert es
  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 21:44 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