![]() |
Function mit mehreren Rückgabewerten
Hallo Leute, heute habe ich mal wieder eine Frage:
Ich habe nun eine eigene function geschriebenm, inder ich aber mehrere Rückgabewerte bekomme. Jetzt ist die Frage, wie ich auf diese zugreifen kann, da ja Result nur einen Wert wiedergibt? Um es ein wenig zu vereinfachen hier ein kleines Beispiel (Nur gerade aus den kopf geschrieben)
Code:
Wie kann ich nun in einer anderen Function auf a und b zugreifen?
function MoreResults:string;
begin a := 1; b := 2; end; Wie gesagt, mit Result bekomme ich ja nur einen Wert zurück. Ich hoffe ihr könnt mir helfen |
AW: Function mit mehreren Rückgabewerten
Hallo,
Du könntest als Result ein Record verwenden. Grüße Klaus |
AW: Function mit mehreren Rückgabewerten
entweder du deklarierst einen Record
Delphi-Quellcode:
oder du übergibst der function Var-Parameter
type
TDeinRecord=record x:Integer; y:Integer; end;
Delphi-Quellcode:
Dabei musst du die variablen aus der aufrufenden funktion übergeben:
function DeineFuction(var x:Integer; var y:Integer)
begin x:=1; y:=2; end;
Delphi-Quellcode:
DeineFunction(ergebnisx,ergebnisy);
|
AW: Function mit mehreren Rückgabewerten
Zitat:
Delphi-Quellcode:
procedure DeineFuction(var x:Integer; var y:Integer);
begin x:=1; y:=2; end; |
AW: Function mit mehreren Rückgabewerten
Hmmm habs jetzt so:
Code:
Jedoch ist die zweite Messagebox immer leer
function TForm1.MoreResults(var value2 : integer);
begin Result := 1; value2 := 2; end; procedure TForm1.Button1Click(Sender: TObject); begin showmessage(MoreResults); showmessage(IntToStr(MoreResults(Value2))); end; |
AW: Function mit mehreren Rückgabewerten
Das dürfte gar nicht kompilieren.
|
AW: Function mit mehreren Rückgabewerten
Zitat:
Delphi-Quellcode:
function TForm1.MoreResults(var value2 : integer);
begin Result := 1; value2 := 2; end; procedure TForm1.Button1Click(Sender: TObject); begin showmessage(MoreResults); showmessage(IntToStr(MoreResults(Value2))); end; |
AW: Function mit mehreren Rückgabewerten
Um aber auch was konstruktives einzuwerfen hätte ich noch folgendes:
Delphi-Quellcode:
es geht sogar noch schöner :mrgreen:
type
TMoreResults = record a,b : integer; function Show : string; end; function TMoreResults.Show : string; begin Result := Format( 'Das Ergebnis ist %d und %d', [ a, b ] ); end; function MoreResults( ParameterA, ParameterB : integer ) : TMoreResults; begin Result.a := ParameterA; Result.b := ParameterB; end; procedure TForm1.Button1Click( Sender : TObject ); begin ShowMessage( MoreResults( 1, 2 ).Show ); end;
Delphi-Quellcode:
type
TMoreResults = record a,b : integer; class operator implicit( const mr : TMoreResults ) : string; end; class operator TMoreResults.implicit( const mr : TMoreResults ) : string; begin Result := Format( 'Das Ergebnis ist %d und %d', [ mr.a, mr.b ] ); end; function MoreResults( ParameterA, ParameterB : integer ) : TMoreResults; begin Result.a := ParameterA; Result.b := ParameterB; end; procedure TForm1.Button1Click( Sender : TObject ); begin ShowMessage( MoreResults( 1, 2 ) ); end; |
AW: Function mit mehreren Rückgabewerten
Hallo,
du hast wohl auch eine Form-Variable value2.
Delphi-Quellcode:
Und ja, dein Code in der IDE war anders, als du ihn hier gezeigt hast.
function TForm1.MoreResults(var theValue2 : integer): Integer;
begin Result := 1; theValue2 := 2; end; procedure TForm1.Button1Click(Sender: TObject); var iResult: Integer; iValue2: Integer; begin iResult:= MoreResults(iValue2); showmessage(IntToStr(iResult)); showmessage(IntToStr(iValue2)); end; Heiko |
AW: Function mit mehreren Rückgabewerten
Ich gehe mal davon aus das sollte:
Zitat:
Schlimmer gehts nimmer! Entweder man schreibt sich eine Prozedur und hat Seiteneffekte. Oder man schreibt sich eine Funktion. Aber die Vermischung von beidem ist einfach... siehe oben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:47 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 by Thomas Breitkreuz