No entiendo porq tantas cosas en el programa, yo lo haria con esta modificacion
Código Delphi
[-]type
MiArray = array[0..3] of string;
var
i,j,x: integer;
A:MiArray;
begin
x:=0;
........
with ADOQuery1 do
begin
first;
while not eof do
begin
A[x]:= FieldByName('Tipo').Value;
inc(x);
next;
end;
end;
...
end;
Si lo que quieres es agregar el resultado de la consulta al arreglo con eso bastara no tienes necesdiad del stringlist