program text_file;

{$mode objfpc}{$H+}

uses sysutils;

var
	txtF: TextFile;
	s: String;

procedure ReadTenLines;
const lineNo: integer = 0;
var linesRead: integer = 0;
begin
	while not EOF(txtF) and (linesRead < 10) do
	begin
		ReadLn(txtF, s); // Read the current line in the file, and store in s
		Inc(linesRead); // linesRead += 1
		Inc(lineNo);
		s := Format('Line %d: %s', [lineNo, s]);
		WriteLn(s);
	end;
end;

begin
	AssignFile(txtF, 'text_file.lpr'); // Open pointer to the file
	Reset(txtF); // Open existing file
	WriteLn('Lines from text_file.lpr will be displayed 10 at a time');
	WriteLn;

	// Read and display the file
	try
		while not EOF(txtF) do
		begin
			ReadTenLines;
			WriteLn;
			WriteLn('Press [Enter] to continue');
			ReadLn;
		end;
	finally
		CloseFile(txtF);
	end;

	Write('End of file reached. Press [Enter] to finish');
	ReadLn;
end.

