Pourquoi ce code obtient-il une erreur d'accès sur la ligne Result := Buffer en D2010, mais pas en D7 ?
Quelque chose, je suppose, impliquant UniCode, mais le compilateur ne génère aucun avertissement.
Avez-vous des suggestions sur une solution de contournement élégante ?
Edit : Ouch : l'appel GetTempPath détruit la pile comme le prouve le fait qu'Extension est vide après la ligne GetTempPath, mais pas avant... Aïe.
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 }