Почему этот код получает ошибку доступа на строке результата: = Буфер в D2010, но не D7?Почему этот код не работает в D2010, но не D7?
Что-то, я бы предположил, используя UniCode, но компилятор не генерирует никаких предупреждений.
Любые предложения по элегантному обходному решению?
Редактировать: Ouch: вызов GetTempPath обрушивает стек, о чем свидетельствует тот факт, что расширение Extension пустое после строки GetTempPath, но не раньше ... 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 для «расширения»? –