delphi - 在 Delphi 7 中加载仅 CR 分隔的文件文本时如何解决问题?

标签 delphi delphi-7 text-files

我有一个很大的文本文件(大约 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;

关于delphi - 在 Delphi 7 中加载仅 CR 分隔的文件文本时如何解决问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8614071/

相关文章:

excel - 如何从 Excel 或记事本(以 .txt 结尾的文档)将数据加载到 Win Bugs 中?

android - 无法在内部存储中找到保存到文本文件的数据,如何将文件保存在内部存储 android studio 中?

windows - Delphi DLL 问题 - 接收到错误的整数值和访问冲突问题

delphi - 在 Delphi 中使用 Default() 赋值来初始化记录变量是否安全?

image - 我们可以在TGIFImage delphi组件中停止动画吗?

java - 如何读取段落特定一侧的行

Delphi JEDI JCL 在安装时崩溃 Windows 7

delphi - 如何在不添加相同数量代码的情况下向表单添加更多对象

StopExpectingException 之后的 Delphi 7 Dunit 检查未按我的预期工作

delphi - 录制扬声器或立体声混音的声音