我有一个大的文本文件(大约100MB),每行用CR字符分隔,而不是CRLF。
我试图使用TStringList.LoadFromFile()或ReadLn(F ..)逐行读取此文本文件,但两种方法都要求这些行用CRLF分隔。
您有任何有效且快速的方法来读取此类文本文件吗?
谢谢。
PS:我正在使用Delphi 7。
最佳答案
这应该做。
将文本文件读取到内存流中。
然后用内容填充字符串列表。textList.Text
接受CR
,LF
和CRLF
的任意组合以形成一行。
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;