使用 TWriter.WriteString 可以节省两个额外的字节

Using TWriter.WriteString two extra bytes are saved

在 Delphi 10.4.2 中,当我使用 TWriter.WriteString 时,会节省两个额外的字节:

var
  FileStream: TFileStream;
  Writer: TWriter;
begin
    FileStream := TFileStream.Create('stream.txt', fmCreate or fmOpenWrite or fmShareDenyNone);
    Writer := TWriter.Create(FileStream, $FF);
    try
      Writer.WriteString('2');
    finally
      Writer.Free;
      FileStream.free;
    end
end;

这两个字节是什么?我怎么能忽略它们?

这是 TWriter.WriteString 的设计。可能您的用例不正确。

第一个字节 ($06) 是值类型(TValueType.vaString 为您的代码)。第二个字节是字符串的长度(给你1个字节)。

您可以在文件 System.Classes.pas.

中的 Embarcadero 提供的源代码中找到所有这些信息

你不能忽视他们。也许您可以使用 TStream.Write 来编写没有额外负载的字符串?