Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Result Handling Frage (https://www.delphipraxis.net/1906-result-handling-frage.html)

DerKapitalist 29. Dez 2002 22:58


Result Handling Frage
 
For a string, dynamic array, method pointer, variant, or Int64 result, the effects are the same as if the function result were declared as an additional var parameter following the declared parameters. In other words, the caller passes an additional 32-bit pointer that points to a variable in which to return the function result.

das ist aus der Delphi6 Hilfe. Mich würde jetzt interessieren, woher der Pointer kommt, den Delphi verwendet um die dynamischen Daten zu speichern. Ist das die gleiche Adresse, wie die meiner Empfängervariable(x := f(y);)? Kann ich dann davon ausgehen, dass wenn ich die Resultvariable verwende ich bei diesen Typen direkt in mein "x" schreibe oder geht das nochmal einen umweg!?

Bin halt neugierig :-)

Minz 31. Dez 2002 11:16

Unter welchem Punkt hast du denn den Hilfetext bekommen?

Grüße Minz

MrSpock 1. Jan 2003 13:24

Hallo DerKapitalist,

ich verstehe die Hilfe so, dass folgende Deklarationen intern gleich verarneitet werden:

Delphi-Quellcode:
function Compute(a, b: String): Int64;

procedure Compute(a, b: String; Var myResult: Int64);

{ Aufruf }
theResult : Int64;

{...}
theResult := Compute('Hallo', 'Welt');

Compute('Hallo', 'Welt', theResult);

In beiden Fällen steht in theResult das Ergebnis.

Ich hoffe das ist das, was du wissen wolltest.

Christian Seehase 1. Jan 2003 15:29

Moin Kapitalist,

der Platz für eine Result Variable, wenn es sich um einen Pointer handelt, wird beim Funktionsaufruf intern automatisch deklariert, aber nicht (!) initialisiert.
Demzufolge ist es nicht die Adresse Deiner Variablen.

Wäre auch fatal, denn Du kannst ja innerhalb der Funktion mit Result anstellen, was auch immer Du willst, und wenn sich das auf Deine Variable auswirken würde wäre das ja ausgesprochen unerfreulich ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz