How to resolve the problem when loading CR only Delimited Text file in Delphi 7?

advertisements

I have a big text file (about 100MB) and each lines are separated by CR character, and not CRLF.

I tried to read this text file, line by line using TStringList.LoadFromFile() or ReadLn(F,..), but both methods require the lines are separated by CRLF.

Do you have any efficient and fast method to read this kind of text file?

Thanks.

PS: I am using Delphi 7.


This should do it. Read the text file into a memory stream. Then fill the string list with the contents. textList.Text accepts any combination of CR,LF and CRLF to form a line.

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;