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.