gpt4 book ai didi

delphi - 为什么这段代码在 D2010 中失败,但在 D7 中却没有?

转载 作者:行者123 更新时间:2023-12-03 14:56:02 25 4
gpt4 key购买 nike

为什么此代码在 D2010 中的 Result := Buffer 行上出现访问错误,但在 D7 中却没有?

我猜想,涉及 Unicode,但编译器不会生成任何警告。

关于优雅的解决方法有什么建议吗?

编辑:哎哟:GetTempPath 调用正在破坏堆栈,事实证明 Extension 在 GetTempPath 行之后为空,但之前不是......哎呀。

    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 }

最佳答案

GetTempPath 期望其第一个参数是缓冲区中的字符数,而不是字节大小。将 SizeOf 更改为 Length 即可工作。

关于delphi - 为什么这段代码在 D2010 中失败,但在 D7 中却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com