I was looking to read a text file in reverse so it would read in from the bottom of the text file first. I did find how to reverse it but it doesn't make sense to me. Can someone explain this to me, how it's working? Also if there is a better/quicker way? It seems to do all the work after the file is read in, like it would be quicker to just read it in from the bottom.
var
datalist : TStringList;
lines,i : Integer;
saveLine : String;
begin
datalist := TStringList.Create;
datalist.LoadFromFile(filename); //loads file
lines := datalist.Count;
for i := lines-1 downto (lines div 2) do
begin
saveLine := datalist[lines-i-1];
datalist[lines-i-1] := datalist[i];
datalist[i] := saveLine;
end;
(At least in Delphi 7, but more recent versions should act similarily)
.LoadFromFile()calls.LoadFromStream(), which reads the whole stream/file into memory and then calls.SetTextStr(), which just calls per line.Add()Knowing this helps us to avoiding to reinvent the whole wheel and instead using an own class with one subtle change in the
.Add()method:And now we just use our own class: