使用 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
来编写没有额外负载的字符串?
在 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
.
你不能忽视他们。也许您可以使用 TStream.Write
来编写没有额外负载的字符串?