如何在覆盖之前使用TFileStream截断现有文件?

时间:2016-02-28 17:12:34

标签: lazarus freepascal delphi

我使用下面的代码写入现有文件,但内容会被追加。清空文件并覆盖它需要什么TFileStream选项?

procedure TUtilitiesForm.btnSaveClick(Sender: TObject);
var fs: TFileStream;
begin
  fs := TFileStream.Create(FileNameEdit1.Text, fmOpenWrite);
  fs.Seek(0,fsFromEnd);
  mmoDDL.Lines.SaveToStream(fs);
  fs.Free;
end;

1 个答案:

答案 0 :(得分:3)

另一方面,使用fsFromEnd将数据追加到现有文件的末尾,fsFromBeginning从头开始,但不会截断文件。

fmOpenWrite更改为fmCreate

procedure TUtilitiesForm.btnSaveClick(Sender: TObject);
var fs: TFileStream;
begin
  fs := TFileStream.Create(FileNameEdit1.Text, fmCreate);
  try
    mmoDDL.Lines.SaveToStream(fs);
  finally
    FreeAndNil(fs);
  end;
end;