Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi function in procedure (https://www.delphipraxis.net/90433-function-procedure.html)

moperswings 17. Apr 2007 13:37


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:
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.
Grüsse, moperswings

chaosben 17. Apr 2007 13:41

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.

hsg 17. Apr 2007 13:44

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.

Die Muhkuh 17. Apr 2007 13:45

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;

moperswings 17. Apr 2007 13:56

Re: function in procedure
 
Vielen Dank, aber warum muss ich die Variablen seperat deklarieren?

Matze 17. Apr 2007 13:58

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)));

moperswings 17. Apr 2007 14:01

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!

Matze 17. Apr 2007 14:10

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;

moperswings 17. Apr 2007 14:19

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!

Klaus01 17. Apr 2007 14:23

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Seite 1 von 2  1 2      

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