Если вы заинтересованы в том, чтобы пользователи не могли изменять ваш файл непосредственно во время выполнения вашего приложения, вам следует использовать TFileStream
для открытия файла, поскольку это позволяет вам блокировать доступ к этому файлу на время, в течение которого он открывается Ваше приложение.
Код ниже использует TFileStream
для открытия файла с возможностью записи и блокирует доступ к этому файлу, чтобы сделать его доступным для чтения только для других приложений.
При необходимости вы можете заменить последний параметр на fmShareExclusive
, что помешает любому другому приложению даже читать ваш файл во время его открытия вашим приложением.
procedure TForm1.Button1Click(Sender: TObject);
var
MyText: TStringlist;
FS: TFileStream;
begin
MyText := TStringlist.create;
FS := TFileStream.Create('D:\Test.txt', fmOpenWrite, fmShareDenyWrite);
try
MyText.Add('H');
MyText.SaveToStream(FS);
finally
FS.Free;
MyText.Free;
end;
end;
Что касается того, чтобы запретить пользователям изменять содержимое вашего файла даже в время, когда ваше приложение не работает. Ну, это намного сложнее. Конечно, вы можете изменить атрибут файла на ReadOnly, но ваши пользователи могут изменять эти атрибуты в любое время.
Один из способов запретить вашим пользователям изменять файл - это записать его в двоичном формате, который не может быть легко читается и, следовательно, также написано людьми. Или, возможно, вы могли бы также подумать о его кодировании.
Другим способом было бы сохранить упомянутый файл в другом месте, чтобы пользователь не мог так легко найти этот файл. На этой заметке, почему вы даже сохраняете файл в папку на рабочем столе?