Загрузка текстового файла в динамический массив

Простейший способ считывания всего файла в память — его считывание в динамический массив строк. Для этого необходимо знать количество строк текста в файле. Поскольку никаких стандартных функций для выполнения этой задачи не существует, потребуется создать такую функцию. Для вычисления количества строк в текстовом файле необходимо в цикле 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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: