我有一個應用程序有3個窗體(TForm1,TForm2,TForm3)。我需要的代碼如下: On TForm1.BitBtn點擊「10.220.70.32 BSNLESDP25A」和「10.220.70.33 BSNLESDP25B」將從位於「%windir%\ System32 \ drivers \ etc」目錄中的「主機」文件中搜索。如果找到「主機」文件屬性將更改爲「只讀」和「系統」,並顯示Form2。如果沒有找到,則「主機」文件的「只讀」和「系統」屬性將被刪除,並且「主機」文件的兩行將被添加爲「10.220.70.32 BSNLESDP25A」和「10.220.70.33 BSNLESDP25B」,並且將顯示Form3 。德爾福字符串搜索從文件
回答
您可以使用IOUtils.TFile作爲GetAttributes
和SetAttributes
;這裏是來自XE2文檔的example,它顯示了兩者都使用。
由於hosts文件通常很小,我可能會使用TStringList
來打開並搜索它,因爲它是最快最簡單的方法。
Windows\
文件夾
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應用程序需要管理員權限,因此UAC將提示用戶輸入管理員帳戶和密碼。有些例子在SO上添加清單。
(另見大衛對您關於64位Windows重定向問題發表評論。)
「屬性:TFileAttributes」給出未定義的標識符。請幫幫我。 –
'TFileAttributes'來自'IOUtils'單元,就像'TFile'一樣。 –
對不起,只記得你提到過XE2。我修復了代碼以反映新的命名要求。 –
- 1. 德爾福TJson.ObjectToJsonString(TFoo):從JSON字符串
- 2. 加密字符串從德爾福C#
- 3. 德爾福 - 等效字符串列表框搜索的ListView
- 4. 從德爾福的.exe文件(如Strings.exe)中讀取字符串
- 5. 德爾福的德文字符集
- 6. 德爾福/帕斯卡爾字符串文字到C/C++
- 7. 添加德爾福字符串
- 8. 德爾福ListView字符串在大膽
- 9. 德爾福字符串共享問題
- 10. 德爾福 - 通過字符串循環
- 11. 字符串BCD(Embarcadero的德爾福)
- 12. 搜索德爾福數據文件中的記錄文件
- 13. 德爾福v.Word - 如何從德爾福
- 14. Windows搜索4查詢 - 德爾福例
- 15. 德爾福BPL搜索路徑
- 16. 德爾福sql搜索列和列
- 17. 德爾福如何更快地搜索二進制文件?
- 18. 德爾福7德爾福XE2 res文件問題
- 19. 從德爾福ADOStoredProc
- 20. 德爾福 - 從TPanel
- 21. 德爾福 - 從FTP格式文件名
- 22. 從德爾福生產.obj文件
- 23. 傳遞字符串作爲PChar類型從CSHARP德爾福DLL
- 24. 德爾福如何從資源字符串單元
- 25. 德爾福 - 從UTF-8轉換字符串
- 26. 德爾福XE3 - 從字符串中刪除Ansi代碼/顏色
- 27. 德爾福CopyMemory索引
- 28. 德爾福HID Delphi7和德爾福XE2
- 29. 德爾福/帕斯卡爾解析字符串到一個ComboBox
- 30. 德爾福2009年:在unicode搜索跳過變音符utf-8
請張貼代碼顯示到目前爲止你已經嘗試過的情況,並解釋如何它不工作,你所期望的方式。這不是一個人們爲你編寫所有代碼的網站;你需要表明你已經付出了一些努力來自己解決問題。 –
我是學習者。我還沒有明確的想法。 –
您將需要運行提升的進程並處理64位系統上的文件重定向。改變屬性似乎毫無意義。什麼試圖實現? –