私は3つのフォーム(TForm1、TForm2、TForm3)を持つアプリケーションを持っています。次のコードが必要です: On TForm1.BitBtn "%windir%\ System32 \ drivers \ etc"ディレクトリにある "host"ファイルから "10.220.70.32 BSNLESDP25A"と "10.220.70.33 BSNLESDP25B"を検索します。見つかった場合、「ホスト」ファイル属性は「読み取り専用」および「システム」に変更され、Form2が表示されます。見つからなければ、 "ホスト"ファイルの "Readonly"と "System"属性が削除され、 "host"ファイルに "10.220.70.32 BSNLESDP25A"と "10.220.70.33 BSNLESDP25B"という2行が追加され、Form3が表示されます。Delphi String Searchファイルから
答えて
GetAttributes
とSetAttributes
にはIOUtils.TFileを使用できます。両方を使用しているXE2ドキュメントのexampleがあります。
hostsファイルは通常かなり小さいので、私はおそらくTStringList
を使って開き、検索するのが最も簡単で簡単な方法です。
uses
System.IOUtils;
// Clear the readonly and system attributes
var
Attributes: TFileAttributes;
SL: TStringList;
Idx: Integer;
begin
Attributes := []; // Clear any existing attributes
TFile.SetAttributes(PathAndFileName, Attributes);
SL := TStringList.Create;
try
SL.LoadFromFile(PathAndFileName);
if SL.IndexOf(YourFirstSearchString) = -1 then // Not found
SL.Add(YourFirstSearchString);
if SL.IndexOf(YourSecondSearchString) = -1 then
SL.Add(YourSecondSearchString);
SL.SaveToFile(PathAndFileName);
finally
SL.Free;
end;
Include(Attributes, TFileAttribute.faSystem);
Include(Attributes, TFileAttribute.faReadOnly);
TFile.SetAttributes(PathAndFileName, Attributes);
end;
は、問題Windows\
フォルダに何も同様に、管理者アカウントで実行せずにこれを行うにはそれ以外に書き込むことができる必要があります注意してください。アプリケーションにWindowsに管理者権限が必要であることを示すマニフェストを含める必要があります。そのため、UACはユーザーに管理者アカウントとパスワードを要求します。ここにマニフェストを追加する例があります。
(また、64ビットWindows上のリダイレクトについてのご質問へのデビッドさんのコメントを参照してください。)
"属性:TFileAttributes"は未定義の識別子を与えます。私を助けてください。 –
'TFileAttributes'は' TFile'と同じように 'IOUtils'ユニットからのものです。 –
申し訳ありませんが、XE2について言及したことを思い出しました。新しい命名要件を反映するようにコードを修正しました。 –
- 1. Regex String Search問題
- 2. Delphi:別のコンピュータからファイルを開く
- 3. Delphi - TIdAttachment、添付ファイルのファイル名からパスを削除する
- 4. Confluence CQL Search String Version 3の投稿者を取得
- 5. ダブルドット.. in Delphi Mapファイル
- 6. Delphiからウェブサイトにログイン
- 7. bing searchから画像をダウンロード
- 8. UNCパスサーバーからファイルをコピー - Delphi 7サービスを使用
- 9. ダブルデータを.txtファイルからDelphiの配列に読み込む
- 10. Delphi ReportBuilder TppTextPipelineからファイルを解放する方法
- 11. Delphi:フォルダ全体からファイルをコピーします。 CopyFileEx?
- 12. Delphi 2009でrcファイルからリソースライブラリを構築する方法は?
- 13. DelphiからSharePointオブジェクトにアクセス
- 14. delphi TActionMainMenuBar Direction右から左
- 15. DelphiコンポーネントからWM_COPYDATAをキャッチ
- 16. DelphiからXP/2003のSetFileInformationByHandle?
- 17. delphiグラフィカルコンポーネントからアクティブx
- 18. ファイルから読み込む推奨タイプplist、string、rich text-objectiveC
- 19. Delphi 5でのOleVariantとStringの割り当て
- 20. ASP.NET Active Directory Search
- 21. ByteBufferからbigdecimal、binary、stringへ
- 22. const TiXmlStringからconst std :: string&
- 23. jqgrid search mvc3
- 24. Delphi 2009(とおそらくDelphi 2010)QTP
- 25. Lucene.net cant search ".net"
- 26. Java Search Engineのデバッグ
- 27. ビルドサーバーをDelphi XEからDelphi XE2に移行
- 28. Search in ListView c#
- 29. delphi xeファイルの暗号化
- 30. Delphi XE2ファイル共有とiOS
あなたがこれまでに試したものを示すコードを投稿し、そしてそれはあなたが期待される方法は動作しませんどのように説明してください。これは、人々があなたのためにすべてのコードを書くサイトではありません。自分で問題を解決するための努力をしていることを示す必要があります。 –
私は学習者です。私は明確なアイデアは持っていない。 –
プロセスを昇格させて実行し、64ビットシステムでファイルリダイレクトを処理する必要があります。属性を変更することは意味がないようです。何を達成しようとしていますか? –