¿Por qué este código obtiene un error de acceso en el resultado: = línea de memoria intermedia en D2010, pero no D7?¿Por qué este código falla en D2010, pero no en D7?
Algo, supongo, relacionado con UniCode, pero el compilador no genera ninguna advertencia.
¿Alguna sugerencia sobre una solución elegante?
Editar: Ay: la llamada GetTempPath está destrozando la pila como lo demuestra el hecho de que la extensión está vacía después de la línea GetTempPath, pero no antes ... Yikes.
function GetTempPathAndFileName(const Extension: string): string;
var
Buffer: array[0..MAX_PATH] of Char;
begin
repeat
GetTempPath(SizeOf(Buffer) - 1, Buffer);
GetTempFileName(Buffer, '~', 0, Buffer);
Result := Buffer; // <--- crashes on this line,
Result := ChangeFileExt(Result, Extension);
until not FileExists(Result);
end; { GetTempPathAndFileName }
"aExtension"? Typo para "extensión"? –