Task

Load the entire contents of some text file as a single string variable.

If applicable, discuss: encoding selection, the possibility of memory-mapping.

Of course, in practice one should avoid reading an entire file at once
if the file is large and the task can be accomplished incrementally instead
(in which case check File IO);
this is for those cases where having the entire file is actually what is wanted.




program ReadAll;
 
{$APPTYPE CONSOLE}
 
uses Classes;
 
var
  i: Integer;
  lList: TStringList;
begin
  lList := TStringList.Create;
  try
    lList.LoadFromFile('c:\input.txt');
    // Write everything at once
    Writeln(lList.Text);
    // Write one line at a time
    for i := 0 to lList.Count - 1 do
      Writeln(lList[i]);
  finally
    lList.Free;
  end;
end.