Werden in Delphi die Parameter der Reihe nach ausgewertet, wenn sie an eine Methode übergeben werden?

Ist die Reihenfolge, in der die Parameter berechnet werden, bevor eine Prozedur in Delphi aufgerufen wird, definiert?

IOW, wenn ich diesen hässlichen Code habe (habe so etwas in einer Legacy-Anwendung gefunden) ...

function A(var err: integer): integer;
begin
  err := 42;
  Result := 17;
end;

Test(A(err), err);

... erhält Test garantiert Parameter (17, 42) oder könnte es auch (17, undefiniert) sein?

Bearbeiten:

Obwohl Davids Beispiel ein anderes Ergebnis mit 32-Bit- und 64-Bit-Compiler zurückgibt, wirkt sich dies (zum Glück) nicht auf meinen Legacy-Code aus, da Test (A (err), err) nur speicherteine Adresse von 'err' im Register und es spielt keine Rolle, ob der Compiler dies tut, bevor er A (err) aufruft oder danach.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage