试图将字符写入TFileStream。文件里有三个垃圾字符。我做错了什么?
var sss: AnsiString;
var S : TFileStream;
S := TFileStream.Create(FileName,fmCreate);
S.Position := S.Size;
sss := '444';
S.Write(sss,3);
S.Free;发布于 2022-10-24 01:09:14
AnsiString被实现为指向其字符数据的指针。Write()接受要写入的数据的var引用。因此,您将指针本身写入文件,而不是指向的字符。
您需要取消引用指针(即索引到字符串),以获得对第一个字符的引用,例如:
S.Write(sss[1], Length(sss));另一种选择是:
S.Write(PAnsiChar(sss)^, Length(sss));尽管如此,Delphi2009和以后的版本都有一个TStreamWriter类,可以简化此任务:
var S : TStreamWriter;
S := TStreamWriter.Create(FileName);
S.Write('444');
S.Free;https://stackoverflow.com/questions/74174599
复制相似问题