Em Delphi, os parâmetros são avaliados em ordem quando passados para um método?
A ordem em que os parâmetros são calculados antes de um procedimento é chamado definido no Delphi?
IOW, se eu tiver esse código feio (encontrei algo assim em um aplicativo legado) ...
function A(var err: integer): integer;
begin
err := 42;
Result := 17;
end;
Test(A(err), err);
... o teste garante receber parâmetros (17, 42) ou também pode ser (17, indefinido)?
Editar:
Embora o exemplo de David retorne resultado diferente com o compilador de 32 e 64 bits, isso (por sorte) não afeta meu código legado porque o Test (A (err), err) apenas armazenaum endereço de 'err' no registro e não importa se o compilador faz isso antes de chamar A (err) ou depois.