我有一个大的文本文件(大约100MB),每行用CR字符分隔,而不是CRLF。

我试图使用TStringList.LoadFromFile()或ReadLn(F ..)逐行读取此文本文件,但两种方法都要求这些行用CRLF分隔。

您有任何有效且快速的方法来读取此类文本文件吗?

谢谢。

PS:我正在使用Delphi 7。

最佳答案

这应该做。
将文本文件读取到内存流中。
然后用内容填充字符串列表。textList.Text接受CRLFCRLF的任意组合以形成一行。

function MemoryStreamToString( M : TMemoryStream) : string;
begin
  SetString( Result,PChar(M.Memory),M.Size div SizeOf(Char)); // Works in all Delphi versions
end;

var
  memStream : TMemoryStream;
  textList  : TStringList;
begin
  textList := TStringList.Create;
  try
    memStream:= TMemoryStream.Create;
    try
      memStream.LoadFromFile('mytextfile.txt');
      textList.Text := MemoryStreamToString( memStream);  // any combination of CR,LF,CRLF interprets as a line
    finally
      memStream.Free;
    end;
    // do something with textList

  finally
    textList.Free;
  end;

end;

09-08 07:49