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.