おそらく私が愚かなのですが、ネットワークドライブが起動しているかどうかを検出するのに問題がありますが、これは 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()
andを実行しても、同じ結果が得られます。FindFirst()
これは Windows 10 のクリーン インストールであり、アップグレードではなく、すべてのパッチが適用された CodeGear 2007 のクリーン インストールです。「管理者として実行」とすべての互換モードを Windows 7 に戻してみました。
私は愚かなことをしていますか?