собсно, не понимаю , как нужно заполнять массив строк. не заполняется он , и всё

- Код: Выделить всё
program bot;
{$mode objfpc}{$H+}
uses
Classes,
crt;
var
a:array of string;
T:text;
m,g,j,name:string;
c,d,i,k:byte;
begin
writeln('Vvedi imja faila');
readln(name);
assign(t,name);
reset(t);
k:=0;
while not eof(t) do
begin
readln(t,g);
k:=k+1;
end;
close(T);
setlength(a,k);
reset(t);
for i :=0 to k Do
begin
readln(t,j);
a[i]:=j; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
m:=a[i];
c:=length(m);
if m[c]='!' then
d:=d+1;
end;
writeln('Na vosklizatelnij znak zakanchivautsa ',d,' strok');
for i:=1 to k Do
writeln(a[i]);
end.
п.с. огромная просьба тем, кто знает в чём ошибка и имеет пару минуток свободного времени, не просто расказать в чем она заключаетсЯ, но и показать на практике как правильно

п.с.с. заранее спасибо.