procedure aufrufen (Help need)

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
relas
Beiträge: 5
Registriert: Mo 10. Nov 2014, 23:39

procedure aufrufen (Help need)

Beitrag von relas »

Ich würde gerne

Code: Alles auswählen

procedure TfmBitter.btnNeuClick(Sender: TObject);
begin
  btn1.Caption := ( '' );
  btn1.Enabled := true;
  btn2.Caption := ( '' );
  btn2.Enabled := true;
  btn3.Caption := ( '' );
  btn3.Enabled := true;
  btn4.Caption := ( '' );
  btn4.Enabled := true;
  btn5.Caption := ( '' );
  btn5.Enabled := true;
  btn6.Caption := ( '' );
  btn6.Enabled := true;
  btn7.Caption := ( '' );
  btn7.Enabled := true;
  btn8.Caption := ( '' );
  btn8.Enabled := true;
  btn9.Caption := ( '' );
  btn9.Enabled := true;
 
end;
in einer anderen procedure aufrufen, Ich habe im Internet gesucht und gefunden allerdings funktioniert es dort wie beschrieben nicht, nun suche ich eine Lösung.
(http://de.wikibooks.org/wiki/Programmie ... Funktionen)

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2816
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: procedure aufrufen (Help need)

Beitrag von m.fuchs »

Dunkel bleibt deiner Rede Sinn. Ich habe noch nciht ganz verstanden, was du eigentlich möchtest. Den Code der dargestellten Prozedur in einer anderen verwenden? Oder TfmBitter.btnNeuClick aus einer anderen Prozedur aufrufen?
Beschreib das mal bitte etwas genauer. Und zeig mal was du schon hast und welcher Fehler kommt.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

relas
Beiträge: 5
Registriert: Mo 10. Nov 2014, 23:39

Re: procedure aufrufen (Help need)

Beitrag von relas »

der code da oben steht in meinem programm weit oben und wird ausgeführt wenn ich auf den knopf drücke (btnNeu).

in einer anderen prozedur habe ich eine if abfrage und wenn diese wahr wird dann soll das passieren was in der oberen prozedur steht, sodass ich statt,

Code: Alles auswählen

if zahl1 = 5 then
procedure TfmBitter.btnNeuClick(Sender: TObject);
begin
  btn1.Caption := ( '' );
  btn1.Enabled := true;
  btn2.Caption := ( '' );
  btn2.Enabled := true;
  btn3.Caption := ( '' );
  btn3.Enabled := true;
  btn4.Caption := ( '' );
  btn4.Enabled := true;
  btn5.Caption := ( '' );
  btn5.Enabled := true;
  btn6.Caption := ( '' );
  btn6.Enabled := true;
  btn7.Caption := ( '' );
  btn7.Enabled := true;
  btn8.Caption := ( '' );
  btn8.Enabled := true;
  btn9.Caption := ( '' );
  btn9.Enabled := true;
 
end;
das hier schreiben kann:

Code: Alles auswählen

if zahl1 = 5 then
begin
procedure TfmBitter.btnNeuClick(Sender: TObject);
end;
(da weiß ich ja halt nicht was ich da hinschreiben muss (hab auch schon andere sachen ausprobiert))

auf wikibooks heißt es:
Dies ist die einfachste Form von Unterprogrammen. Diese nehmen keinen Wert entgegen und geben auch keinen zurück.

Will man nun die Anweisungen aus dem Eingangsbeispiel:

Code: Alles auswählen

var
  Name: string;
begin
  Writeln('Wie heisst du?');
  Readln(Name);
  Writeln('Hallo ' + Name + '! Schoen, dass du mal vorbeischaust.');
  Readln;
end.
gleich zweimal aufrufen und dafür eine Prozedur verwenden, dann sähe das Ergebnis so aus:

Code: Alles auswählen

var
  Name: string;
 
procedure Beispielprozedur;
begin
  Writeln('Wie heisst du?');
  Readln(Name);
  Writeln('Hallo ' + Name + '! Schoen, dass du mal vorbeischaust.');
  Readln;
end;  // Ende procedure Beispielprozedur
 
begin // Beginn des Hauptprogramms
  Beispielprozedur;
  Beispielprozedur;
end.  // Ende Hauptprogramm
danke nochmal für die schnelle hilfe :oops:

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2816
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: procedure aufrufen (Help need)

Beitrag von m.fuchs »

Na dann solltest du noch einmal richtig lesen. Da steht nichts davon, dass du beim Aufruf den Prozedurkopf noch einmal hinschreiben sollst, sondern nur den Prozedurnamen.

Allerdings gibt es in deinem Fall einen Unterschied: die Prozedur erwartet nämlich einen Parameter namens Sender.
Dein Aufruf muss so lauten:

Code: Alles auswählen

if zahl1 = 5 then begin
  btnNeuClick(nil);
end;
Was bedeutet das nil? Es ist einfach Zeiger auf das Nichts (http://de.wikipedia.org/wiki/Nullwert). In diesem Fall kannst du das an die Prozedur übergeben, weil der Parameter in der Prozedur nicht benutzt wird.

Soweit so kurz erst einmal dazu. Bei Fragen: fragen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

relas
Beiträge: 5
Registriert: Mo 10. Nov 2014, 23:39

Re: procedure aufrufen (Help need)

Beitrag von relas »

vielen dank! hat alles geklappt:)

Antworten