【发布时间】:2010-05-06 23:01:36
【问题描述】:
为什么此代码在 D2010 中的 Result := Buffer 行上出现访问错误,但在 D7 中却没有?
我猜是涉及到 UniCode,但编译器不会生成任何警告。
对优雅的解决方法有什么建议吗?
编辑:哎哟:GetTempPath 调用正在破坏堆栈,这一事实证明了在 GetTempPath 行之后 Extension 是空的,但之前不是……哎呀。
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 }
【问题讨论】:
-
“扩展”? “扩展名”的错字?
标签: delphi