Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#13

AW: Result einer Funktion "Stil Frage"

  Alt 5. Nov 2012, 16:18
Wo schlußendlich die "Result-Variable herkommt, ist also unklar.
Das ist keineswegs unklar, denn wie du zuvor richtigerweise ausgeführt hast, ist das ein var Parameter.
Im Fall einer Zuweisung ist es die Variable, welcher du zuweist. Andernfalls eine vom Compiler erzeugte Variable.

Das kann man sich auch in der CPU Ansicht anschauen.

Im von dir gezeigten Beispiel wird dort s übergeben

Code:
s := Test;
8D45F4           lea eax,[ebp-$0c]
E8A4FFFFFF      call Test
Weist man auf etwas zu, was nicht als var Parameter übergeben werden kann (z.b. eine Property), dann wird die compiler erzeugte Variable benutzt:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  s: string;
begin
  for i := 0 to 2 do
    Caption := Test;
  ShowMessage(s);
end;
Code:
Caption := Test;
8D45EC          lea eax,[ebp-$14]
E8A1FFFFFF      call Test
8B55EC          mov edx,[ebp-$14]
8B45FC          mov eax,[ebp-$04]
E8C662FBFF      call TControl.SetText
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat