1.А разве во втором случае (not RadioButton1.Checked) Вы не должны обращать к ЭЛЕМЕНТАМ массива ?
Вот здесь :
XArr := ADOTable1.Fields[i-1].Value;
2. У Вас "вроде, как" получается "вечный цикл" ...
Код:
while not ADOTable1.Eof do
begin
...
while i<=ADOTable1.FieldCount do
begin
ADOTable1.First; <= вот здесь ...
...
end;
end;
Не зависимо от функционала должно быть примерно так :
Код:
ADOTable1.First;
while not ADOTable1.Eof do
begin
...
for i:=0 to (ADOTable1.FieldCount-1) do
begin
...
end;
ADOTable1.Next;
end;