您好我需要使用非常大的二进制文件,所以我不能使用诸如Assign(),Closefile()等函数。我想使用TFileStream作为其Read()/ Write()方法。但我有问题因为我无法回读我写给流的内容。我已经明白问题与编码有关所以我认为我需要使用Unicode而不是Ansi。但我还不明白该怎么做。有人可以通过实例帮助我吗?我知道如何写入/读取文件,但这无助于我解决问题。
答案 0 :(得分:3)
如果你控制写作和阅读,你可以使用读者和作家。例如:
var
reader : TReader;
begin
reader := TReader.Create(MyStream, BufferSize);
try
myString : = reader.ReadString;
finally
reader.Free;
end;
end;
TReader有一种区分unicode和ansistring的方法,只要它们是由TWriter编写的。
如果您不控制写入部分。您希望有办法知道文件格式。 (至少字符串和它们的大小)。所以你可以准备一个缓冲区来读取。中的字符。
答案 1 :(得分:0)
对不起,我的答案错了,就像安德烈亚斯说的那样。也许这篇文章会帮助你吗? Writing a string to a TFileStream in Delphi 2010
答案 2 :(得分:-1)
如果要从/向流写入/读取字符串,最简单的方法是将字符串转换为Shortstring,该字符串总是255个字符长(但它暗示您的字符串不得超过255个字符)。如果您只需要在流中读/写字符串,那么请使用TStringList。
否则你还有其他更复杂的选择: