En Delphi, ¿se evalúan los parámetros en orden cuando se pasan a un método?

¿Se define el orden en el que se calculan los parámetros antes de llamar a un procedimiento definido en Delphi?

IOW, si tengo este código feo (encontré algo como esto en una aplicación heredada) ...

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

Test(A(err), err);

... ¿se garantiza que la prueba reciba los parámetros (17, 42) o también podría ser (17, indefinido)?

Editar:

Aunque el ejemplo de David devuelve un resultado diferente con el compilador de 32 y 64 bits, esto (afortunadamente) no afecta mi código heredado porque la Prueba (A (err), err) solo almacenaUna dirección de 'err' en el registro y no importa si el compilador hace esto antes de llamar a A (err) o después.

Respuestas a la pregunta(2)

Su respuesta a la pregunta