Con el siguiente código puedes cargar las lineas del archivo en una variable llamada "valores" de tipo array of string, además de que los campos tambien te los separa, para ejecutarlo necesitas en tu form un memo, dos edit, y tres botones (no modifiques el nombre de ninguno de los componentes hasta que lo pruebes)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
valores:array of array of string;// en esta variable se guardan los valoresde cada linea
//separados por campos
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{NOTA:
el codigo de este botón crea un archivo de muestra que se carga en el memo, hay que presionar este botón primero}
procedure TForm1.Button1Click(Sender: TObject);
var archivo:textfile;
i,j:integer;
cadenas:array[0..9] of string;
begin
cadenas[0]:='palabra0';
cadenas[1]:='palabra1';
cadenas[2]:='palabra2';
cadenas[3]:='palabra3';
cadenas[4]:='palabra4';
cadenas[5]:='palabra5';
cadenas[6]:='palabra6';
cadenas[7]:='palabra7';
cadenas[8]:='palabra8';
cadenas[9]:='palabra9';
randomize;
assignFile(archivo,'c:entrada.txt');
rewrite(archivo);
for i:=1 to 400 do begin
for j:=1 to 10 do begin
write(archivo,cadenas[random(9)]);
write(archivo,';');
end;
writeln(archivo,'');
end;
closefile(archivo);
memo1.Lines.Clear;
Memo1.Lines.LoadFromFile('c:entrada.txt');
end;
{NOTA:
se carga el archivo, si es que existe, al activarse la forma, puedes usar esto en lugar del codigo que tu pones para ahorrarte lineas}
procedure TForm1.FormActivate(Sender: TObject);
begin
if fileexists('c:entrada.txt')then
Memo1.Lines.LoadFromFile('c:entrada.txt');
end;
{NOTA:
Este código carga el contenido del archivo en la variable "valores", hay que presionar este botón despúes de presionar el anterior, para que esto funcione tambien debe haber un punto y coma al final de cada linea, como el que yo hago de muestra}
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
cadena,cadena2:string;
begin
SetLength(valores,0);
for i:=0 to Memo1.Lines.Count-1 do begin
SetLength(valores,length(valores)+1);
cadena:=Memo1.Lines[i];
cadena2:='';
for j:=1 to length(cadena) do begin
if cadena[j]<>';' then
cadena2:=cadena2+cadena[j]
else begin
SetLength(valores[length(valores)-1],length(valores[length(valores)-1])+1);
valores[length(valores)-1,length(valores[length(valores)-1])-1]:=cadena2;
cadena2:='';
end;
end;
end;
ShowMessage('Carga del archivo completada');
end;
{NOTA:
Ahora, pon un número en el edit1 que esté entre 0 y 399, y en el edit2 de 0 a9, y se mostrará el valor que tenga valores[x,y] donde x es lo que hay en edit 1 y y el edit 2
}
procedure TForm1.Button3Click(Sender: TObject);
begin
ShowMessage(valores[strtoint(Edit1.Text),strtoint(Edit2.Text)]);
end;
end.
Ahora, lo que tu debes hacer es un doble ciclo, para llenar tu tabla, de la siguiente manera:
Valores[renglon, columna]