Lo lógico es acceder a los campos del resultado de la consuta por su nombre:
Código Delphi
[-]
Str := Query.FieldByName('Campo1').AsString;
I := Query.FieldByName('CampoInteger').AsInteger;
A la hora de guardarlo en la matriz depende de cómo la tengas definida.
Por ejemplo:
Código Delphi
[-]
matriz[1] := Query.FieldByName('Campo1').AsString;
NOTA: Se me adelantaron por los pelos....