왜이 코드는 D2010의 Result : = Buffer 줄에서 액세스 오류가 발생하지만 D7에서는 그렇지 않습니까?D710이 아닌 D2010에서이 코드가 실패하는 이유는 무엇입니까?
UniCode가 포함 된 것으로 생각되지만, 컴파일러는 경고를 생성하지 않습니다.
우아한 해결 방법에 대한 제안 사항이 있으십니까?
편집 : Ouch : GetTempPath 호출은 GetTempPath 행 다음에 Extension이 비어 있지만 이전에는 그렇지 않다는 사실에 의해 입증 된대로 스택을 파기하고 있습니다. 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"? "Extension"에 오타가 있습니까? –