可能是我很愚蠢,但是我在检测网络驱动器是否启动时遇到了问题,但只有在 IDE 中运行程序时——在 IDE 之外运行程序时,才能正确检测到网络驱动器。IDE 在 Windows 7 上运行良好。
虽然有问题的程序不同,但我可以通过创建一个新项目并将以下内容添加到 FormsOnActivate
事件中来重现该问题:
var
bRet: Boolean;
LTemp2: string;
LFreeSpace: Int64;
LTotalSpace: Int64;
begin
LTemp2 := 'T:\';
bRet := GetDiskFreeSpaceEx(PAnsiChar(LTemp2), @LFreeSpace, @LTotalSpace, nil);
ShowMessage('GetDiskFreeSpaceEx: Drive T: is up? '+BoolToStr(bRet, True));
end;
假设我有一个网络驱动器T:
,如果我在 IDE 中运行程序,那么上面的总是返回 False,但是如果我从桌面快捷方式运行构建的程序,那么它返回 True。如果我在程序启动后通过单击按钮运行它,我会得到相同的行为。在根目录上做DiskSize()
和给出相同的结果。FindFirst()
这是一个全新的 Windows 10 安装,而不是升级,它是 CodeGear 2007 的全新安装,并应用了所有补丁。我已尝试“以管理员身份运行”并将所有兼容模式恢复到 Windows 7。
我在做傻事吗?