Простейший способ считывания всего файла в память — его считывание в динамический массив строк. Для этого необходимо знать количество строк текста в файле. Поскольку никаких стандартных функций для выполнения этой задачи не существует, потребуется создать такую функцию. Для вычисления количества строк в текстовом файле необходимо в цикле while not Eof подсчитать количество строк в файле, а затем вызвать процедуру Reset, чтобы вернуться к начальной позиции файла.
В следующем примере цикл while not Eof в функции GetLineCount используется для получения количества строк текстового файла. Полученный результат затем используется в вызове функции SetLength для изменения размера динамического массива.
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
myFile: Text;
lines: array of string;
cnt: Integer;
fileName: string;
function GetLineCount(var ATextFile: Text): Integer;
begin
Result:= 0;
while not Eof(ATextFile) do
begin
Readln(ATextFile);
Inc(Result);
end;
Reset(ATextFile); { перемещение позиции к началу }
end;
begin
fileName:= 'data.txt';
AssignFile(myFile, fileName);
{$I-}
Reset(myFile);
{$I+}
if IOResult = 0 then
begin
{ изменение рахмера динамического массива и загрузка строк в массив }
SetLength(lines, GetLineCount(myFile));
for cnt:= Low(lines) to High(lines) do
Readln(myFile, lines[cnt]);
{ закрытие файла }
CloseFile(myFile);
{ работа со строками в памфти }
for cnt:= Low(lines) to High(lines) do
Writeln(UpperCase(lines[cnt]));
end else
Writeln('can not open file: ', fileName);
Readln;
end.