![]() |
Wozu out-Parameter?
Hallo,
in der Delphi-Hilfe steht, daß ich einen Parameter als Ausgabeparameter mit dem Schlüsselwort "out" kennzeichnen kann. Dann wird der Inhalt des Parameters beim Methodenaufruf verworfen und ggf. mit Inhalt aus der Methode gefüllt. Soweit die Theorie, erstmal klar. Aber ich kann mir nicht so richtig ein praktisches Beispiel herleiten wo mir das richtig was bringt. Das selbe Ergebnis könnte ich doch auch mit dem Schlüsselwort var erreichen, oder? Hat da jemand einen Denkanstoß für mich? Danke - VizeTE |
Re: Wozu out-Parameter?
Out wird vorwiegend im COM-Bereich genutzt. Aber auch in Delphi kann es Sinn machen. Wenn man mehrere Werte aus einer Methode zurückgeben will, kann man anstatt von var auch out nutzen, um dem Aufrufer klar zu machen, dass der Wert ausschließlich für die Rückgabe genutzt wird.
...:cat:... |
Re: Wozu out-Parameter?
Moin!
Auch macht sich Delphi vorher nicht die Mühe den aktuellen Wert der Variablen zu ermitteln und diesen der Funktion beim Aufruf zu übergeben. Auch kann Delphi damit besser optimieren, da es genau weiss, dass der Inhalt der Variablen vor dem Funktionsaufruf unwichtig ist. MfG Muetze1 |
Re: Wozu out-Parameter?
aha, also bietet das nicht wirklich neue Möglichkeiten sondern ist "nur" eine Frage von Stil und Optimierung.
Danke! |
Re: Wozu out-Parameter?
Zitat:
Delphi-Quellcode:
// ein konstruiertes Beispiel
function Test(out key : integer):boolean; begin Result := False; if key > 100 then // <==== musste eigentlich einen Fehler erzeugen (zumindest Warnung) begin key := 0; Result := True; end; end; |
AW: Wozu out-Parameter?
Delphi-Quellcode:
Wie würde dann die Funktion im Programm aufgerufen werden?
// ein konstruiertes Beispiel
function Test(out key : integer):boolean; begin Result := False; if key > 100 then // <==== musste eigentlich einen Fehler erzeugen (zumindest Warnung) begin key := 0; Result := True; end; end; |
AW: Wozu out-Parameter?
Sinnvoll ist diese Abfrage nicht, da eine Out-Variable ja beim Aufruf mit dem Standardwert vorbelegt wird.
Aufruf:
Delphi-Quellcode:
if Test( <irgendeine Integer-Variable>) then ...
![]() |
AW: Wozu out-Parameter?
Also in Delphi 7 bekomme ich 123 angezeigt:
Delphi-Quellcode:
Seid ihr euch sicher dass der Compiler das out in irgendeiner Weise beachtet bzw. anders behandelt?
procedure TestOut(out abc: Integer);
begin ShowMessage(IntToStr(abc)); end; procedure TForm1.Button1Click(Sender: TObject); var intVar: Integer; begin intVar := 123; TestOut(intVar); end; Sieht nämlich nicht so aus. |
AW: Wozu out-Parameter?
OUT ist grundsätzlich (per Definition) wie das Funktions-RESULT.
"Wenn" etwas rein geht, dann wird es ignoriert und es wird nur etwas zurückgegeben. Bzw. der Programmierer darf niemals davon ausgehen, dass dort "gültige" Were von außen rein kommen. Der Compiler behandelt es allerdings vorallem wie VAR, nur sollte er zumindestens die "Variable nicht initialisiert"-Prüfung deaktivieren. |
AW: Wozu out-Parameter?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 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