procedure TForm1.Button1Click(Sender: TObject);
var
i,z:integer;
f:system.textfile;
t:string;
data:array of string;
begin
if opendialog1.execute then
begin
assignfile(f,opendialog1.filename);
reset(f);
z:=0;
setlength(data,0);
//Repeat for each line until end of file
repeat
inc(z);
readln(f,t);
setlength(data,length(data)+length(t));
data[z]:=t;
until eof(f);
setlength(data,length(data)+3*z);
//Add to each line the line number
for i:=1 to z do data[i]:=inttostr(i)+' '+data[i];
setlength(data,length(data)+2);
//Add a carriage return and line feed
data[1]:=data[1]+#13+#10;
i:=length(data[5]);
data[5]:='';
setlength(data,length(data)-i);
//create a new textfile with the new data
assignfile(f,opendialog1.filename+'2');
rewrite(f);
//write all lines
for i:=1 to z do writeln(f,data[i]);
//save file and close it
CloseFile(f);
end;
end;