![]() |
function in procedure
Hallo,
kann ich nicht eine Funktion auch innerhalb einer Procedure laufen lassen? Ich habe ein einfaches Bsp, aber die Funktion hat nicht genügend Parameter? Was muss ich denn noch ausser der summe weitergeben?
Delphi-Quellcode:
Grüsse, moperswings
procedure TForm1.Button1Click(Sender: TObject);
function summe(var a,b: Integer): Integer; begin a := strtoint(Edit1.text); b := strtoint(Edit2.Text); result := a + b; end; var wert: Integer; begin wert := summe; //() nicht genügend wirkliche Parameter; Label1.Caption := inttostr(wert); end; end. |
Re: function in procedure
Lösung:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
function summe(): Integer; var a,b: Integer; //:) begin a := strtoint(Edit1.text); b := strtoint(Edit2.Text); result := a + b; end; var wert: Integer; begin wert := summe; //() nicht genügend wirkliche Parameter ... war gestern :) Label1.Caption := inttostr(wert); end; end. |
Re: function in procedure
korrekt wäre es so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
function summe(): Integer; var a,b: Integer; begin a := strtoint(Edit1.text); b := strtoint(Edit2.Text); result := a + b; end; var wert: Integer; begin wert := summe; //() nicht genügend wirkliche Parameter; Label1.Caption := inttostr(wert); end; end. |
Re: function in procedure
Naja, sehr toll ist das ja nicht, das hier wäre um einiges besser:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
function summe(const a, b: Integer): Integer; begin result := a + b; end; var wert: Integer; begin Label1.Caption := inttostr(summe(5,5)); end; |
Re: function in procedure
Vielen Dank, aber warum muss ich die Variablen seperat deklarieren?
|
Re: function in procedure
Schau dir das Beispiel der Muhkuh an, es geht auch, wie du es gerne hättest. Du hast bei dir lediglich vergessen der Funktion die Parameter zu übergeben.
Der Aufruf wäre dann beispielsweise dieser:
Delphi-Quellcode:
Label1.Caption := inttostr(summe(StrToInt(Edit1.Text), StrToInt(Edit2.Text)));
|
Re: function in procedure
Um die Parameter gings mir ja! Ich ging davon aus, dass die mit der function summe übergeben werden.
Nur die Variablen in der procedure nochmal zu deklarieren macht ja auch keinen Sinn! |
Re: function in procedure
Wenn du das gerne so hättest, geht auch das hier, wobei mir so eine Lösung nicht sonderlich gefallen würde:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
function summe: Integer; begin result := StrToInt(Edit1.Text) + StrToInt(Edit2.text) end; begin Label1.Caption := IntToStr(summe); end; |
Re: function in procedure
Die Lösungen sind alle klasse, aber darum geht es mir nicht mehr! Ich will verstehen, warum es falsch war, die Variablen in der Funktion zu deklarieren, damit mir solche Fehler in Zukunft nicht mehr passieren!
|
Re: function in procedure
Alle Variablen die in einer Funktion deklariert werden sind nur in dieser sichtbar, das war aber nicht Dein Fehler.
Du hast die Variablen in der Parameterliste der Procedure deklariert und die Funktion ohne Parameter aufgerufen. Grüße Klaus |
Re: function in procedure
Hallo Klaus,
den Fehler sehe ich nicht und kann ihn so nicht verstehen! Ich sehe nur, das chaosben und hsg die Variablen aus der Funktion rausgenommen haben. Sonst sind die Codes doch identisch, wenn ich mich nicht versehe! Könntest Du es mir erklären! |
Re: function in procedure
Der Fehler hat nichts mit Nested Functions zu tun. Deine Funktion sum hat zwei Parameter erwartet. Du hast sie aber ohne Parameter aufgerufen. Wie soll das Funktionieren?
|
Re: function in procedure
Delphi-Quellcode:
Das was Muhkuh in seinem Beitrag geschrieben hat, ist letztendlich das wie es sein sollte.
procedure TForm1.Button1Click(Sender: TObject);
function summe(var a,b: Integer): Integer; //<-- hier hast Du a und b in der Parameterlist deklariert begin a := strtoint(Edit1.text); b := strtoint(Edit2.Text); result := a + b; end; var wert: Integer; begin wert := summe; //<-- hier rufst Du die Funktion ohne Parameter auf Label1.Caption := inttostr(wert); end; end. Denn Du nutzt die Parameter nicht wirrklich, du fragst in Deiner Funktuion summe irgendwelche Editfelder ab, das geht rein formal ist aber nicht schön. Grüße Klaus |
Re: function in procedure
Aha, mein Denkfehler lag darin, dass ich nicht wusste, dass es einen Unterschied zwischen den Variablen in einer Parameterliste gibt und der Variablendeklaration! Werde mich jetzt nochmal mit der Parameterliste beschäftigen! Vielen Dank Klaus und Michael
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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