私のプログラムが実行中のディスク(HDD、フロッピー、フラッシュ、CD)にファイルを書き込むことができるかどうかを知る必要があります。 私が何か試してみました:問題は、ディスクが読み取り専用されている場合、Windowsは私に私にそのディスクに書き込みアクセスがあるかどうかのテスト
「がappname.exe伝えるエラーメッセージ与えることである
{$I-} Rewrite(myFile); {$I+} Result:= (IOResult = 0);
を - ライトプロテクトエラーディスクは、それがライトプロテクトされているために書き込むことができません。ドライブDにボリューム USB_BOOTから書き込み保護を削除してください:。「私はとの書き込みアクセスをテストするにはどうすればよい
を続行TRYAGAINキャンセルエラー/警告メッセージが表示されますか?おかげさまで
編集:
[OK]をクリックします。 「バグ」は、上記のコードとは何の関係もありません。私はそれがそこに現れると思った。私は、コードを読み取り専用のディスクに移動し、そこから実行しました。バグは、この行に、「CreateShortcutEx」と呼ばれる機能で表示されます。
MyPFile.Save(PWChar(WFileName),False);
MyPFileは次のように宣言されています:
var
MyObject : IUnknown;
MySLink : IShellLink;
MyPFile : IPersistFile;
Directory : String;
WFileName : WideString;
MyReg : TRegIniFile;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
.....
end;
それでは、なぜMyPFileは、アプリケーションのドライブへの書き込みしようとしている(1 WFileNameパラメータが "C:\ documents and settings \ bla bla"の場合は読み取り専用です)。
作品とそれに
コール。 – Ampere
エラーモードを復元する必要があります。私はそれに応じてコードを修正しました。 – gabr
@ gabr:もちろん、これを修正してくれてありがとう。 – mghie