![]() |
AW: Function mit mehreren Rückgabewerten
Das habe ich einfach nur aus dem Kopf geschrieben und sollte auch nur zur Veranschaulichung dienen.
Aber ok. |
AW: Function mit mehreren Rückgabewerten
ich kann mich den anderen Usern nur anschließen. Nutz eine Prozedur, wenn du mehrere Rückgabewerte brauchst.
Ist einfache und weeeeeeeesentlich schöner... :wink: |
AW: Function mit mehreren Rückgabewerten
Oder eine Funktion mit Status als Rückgabewert
|
AW: Function mit mehreren Rückgabewerten
Gibt es eigentlich irgendeinen speziellen Grund, warum es hier normal zu sein scheint, reine Ausgabeparameter als "var" anstatt als "out" zu deklarieren?
Soll der Aufrufende nicht sehen können, dass er da gar nix reinpacken muss? |
AW: Function mit mehreren Rückgabewerten
Mach' ne Klasse draus, dann lösen sich die Probleme in Luft auf!
|
AW: Function mit mehreren Rückgabewerten
@SyntaxXx schreibt:
Zitat:
Schließlich bleibt es im net länger und andere lesen das gerne. Also als Funktionsergebnis kann man ein Record oder ein Array nehmen. Wie das geht, zeigt dieses Beispiel:
Delphi-Quellcode:
interface
type dreierOut: Array[1..3] of integer; function MoreResults:dreierOut; procedure berechneWas; var Ergebnis: dreierOut; Result: integer; implementation function TForm1.MoreResults:dreierOut; var a, b, c : integer; begin a := 49; b := 12; c := 66; dreierOut[1] := a; dreierOut[2] := b; dreierOut[3] := c; end; procedure TForm1.berechneWas; begin … Ergebnis:= MoreResults; // oder: Result:= MoreResults[1]; end; |
AW: Function mit mehreren Rückgabewerten
Zitat:
* als VAR-Parameter, OUT-Parameter (Letzters nur für einfache Typen, ala Integer ... NICHT für String) * als Result geht es natürlich auch * oder als Feld (Variable) in einer Klasse, wenn man Variablen und diese Funktion/Prozedur darin verpackt * oder ... |
AW: Function mit mehreren Rückgabewerten
Zitat:
Zitat:
Zitat:
Ich selber verwende aber weder var noch out, sonder benutze wie hier schon angesprochen immer Funktionen. |
AW: Function mit mehreren Rückgabewerten
Und z.B. ein String, Variant, DynArray und Interface sind gemanagte Typen, wo die Variable "initialisiert" sein muß, da Delphi den Speicher automatisch verwaltet.
Solche Typen passen da nicht zur Philosophie des OUT und OUT würde (eigentlich) das Speichermanagement schrotten. Für sowas nutze ich dann einfach Attribute oder Kommentare, als "Dokumentation".
Delphi-Quellcode:
procedure GibMir([out] Variable: string);
procedure GibMir({out} Variable: string); /// <summary> gibt mir eine Variable </summary> /// <param name="Variable"> [OUT] hier rein </param> procedure GibMir(Variable: string); |
AW: Function mit mehreren Rückgabewerten
Man könnte auch für die Rückgabe eine Klasse oder einen Record nutzen, wenn man keine VAR oder OUT in den Parametern nutzen will.
Delphi-Quellcode:
type
TBackData=class a: Integer; b: Integer; c: Integer; end; function berechneirgendwas(x, y: Integer): TBackData; begin Result:=TBackData.Create; Result.a:=x*y; Result.b:=x+y; Result.c:=x-y; end; procedure irgendwo; var backdata: TBackData; begin backdata:=berechneirgendwas(10, 5); try // mach irgendwas mit den Daten finally backdata.free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:49 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