![]() |
function mit zwei Rückgabewerten?
Hey,
Ich habe einen function geschrieben die mir einen Rückgabewert liefert und zwar ein String. Nun möchte ich aber dass die Function mir, wenn ich einen StringA reinliefere, einen StringB und einen IntegerA zurückgibt. Wie mache ich sowas? |
Re: function mit zwei Rückgabewerten?
Nimm eine Prozedur mit zwei VAR-PArametern.
|
Re: function mit zwei Rückgabewerten?
Delphi-Quellcode:
Parameter, die mit var angegeben werden, werden nach Funktionsaufruf an den Aufrufer zurückgegeben.
function MachWas (StringA : String; var IntegerA : integer) : string;
Hope it helps onlinekater |
Re: function mit zwei Rückgabewerten?
Alternativ nimmst du einen Record. Dies macht vorallem dann Sinn, wenn es mal mehr wie 2 Rückgabewerte sind oder wenn du schon mehrere Inputparameter hast.
Delphi-Quellcode:
TErgebnis = record
Name : string; Anzahl : integer; end; procedure MachWas(var erg:TErgebnis); |
Re: function mit zwei Rückgabewerten?
Danke euch dreien...
Ich probiere den Ansatz mit dem record mal. mfg Hansi |
Re: function mit zwei Rückgabewerten?
Ich hätte auch ein Record vorgeschlagen, aber als Rückgabewert:
Delphi-Quellcode:
Du musst dazu wie oben im code in der Prozedur / Funktion, die etwas mit dem Rückgabewert machen soll, diesen noch mal als Variable definieren, sonst musst du deine Funktion mehrfach aufrufen:
// Typendefinition
type TStringAndInt = Record rString: String; rInteger: Integer; end; // Irgendwo im Code ;-) function Test: TStringAndInt; begin result.rString := 'Test'; result.rInteger := 123; end; // Und zum Ausführen procedure TForm1.Button1Click(Sender: TObject); var Rueckgabe: TStringAndInt; begin Rueckgabe := Test; Showmessage(Rueckgabe.rString + ' ' + IntToStr(Rueckgabe.rInteger)); end;
Delphi-Quellcode:
Aber das geht natürlich auf Kosten der Geschwindigkeit.
Showmessage(Test.rString + ' ' + IntToStr(Test.rInteger));
|
Re: function mit zwei Rückgabewerten?
Hallo
oder du verwendest "out"
Delphi-Quellcode:
[edit]Delphi-Tags vergessen! Sorry! [/edit]
procedure Test(out i: Integer; out S: String);
begin i := 123; S := DP; end; |
Re: function mit zwei Rückgabewerten?
Zitat:
Also es gibt wie gesagt nur die 2-3 drei Möglichkeiten die ich grad nochmal zusammenfasse damit ich nicht nur OT geschrieben hab :mrgreen: 1. Function gibt ein Record zurück
Delphi-Quellcode:
2. Proceduren mit Out-Parametern
ABC = record
A: String B: Integer; C: Boolean; end; function GetaABC: ABC; begin ABC.A := 'Hallo'; ABC.B := 22; ABC.C := true; end;
Delphi-Quellcode:
3. Das gleiche mit Var-Parametern.
procedure GiveMeAnA(out AA: String);
begin AA:= 'A'; end; Gruß Neutral General |
Re: function mit zwei Rückgabewerten?
Hallo ManuMF,
Leider habe ich dich an dem einen Punkt mit dem zweifachen aufrufen nicht ganz verstanden. Bis jetzt habe ich: Das deklariert:
Delphi-Quellcode:
dann die function:
type
Ttest = Record test_String: String; test_Integer: Integer; end;
Delphi-Quellcode:
und rufe über:
Function test(StringA: String): Ttest;
Delphi-Quellcode:
die function auf.
s := test(Edit1.Text).test_String;
i := test(Edit1.Text).test_Integer; Nur wird diese 2x durchlaufen. Wie kann ich das verhindern? |
Re: function mit zwei Rückgabewerten?
Delphi-Quellcode:
with test(Edit1.Text) do
begin s := test_String; i := test_Integer; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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