使用tfilestream读/写问题文件二进制文件

时间:2011-06-10 18:01:30

标签: delphi delphi-xe

您好我需要使用非常大的二进制文件,所以我不能使用诸如Assign(),Closefile()等函数。我想使用TFileStream作为其Read()/ Write()方法。但我有问题因为我无法回读我写给流的内容。我已经明白问题与编码有关所以我认为我需要使用Unicode而不是Ansi。但我还不明白该怎么做。有人可以通过实例帮助我吗?我知道如何写入/读取文件,但这无助于我解决问题。

3 个答案:

答案 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。

否则你还有其他更复杂的选择:

  • 将TStringList写入/读入流(然后你必须实现一种文件格式)
  • 编写字符串并通过char检索它读取char并累积字符,直到遇到null char,重复每个字符串的操作