Cristhor1982,
El problema es que estas tratando de accesar una posición de memoria no asignada a una lista, por ejemplo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
StrList : TStringList;
begin
StrList := TStringList.Create;
for i:= 0 to 9 do
StrList.Add(IntToStr(i));
for i := 0 to 10 do
ShowMessage(StrList.Strings[i]);
end;
En el código anterior se asignan 10 elementos (0 al 9) a una variable tipo TStringList y luego se trata de leer 11 elementos (0 al 10), lo cual produce el error
List index out of bounds (10), el valor entre paréntesis (En este caso 10) es la posición de memoria que esta fuera de los límites asignados a la lista (Posición 11), lo cual es lógico dado que la lista solo tiene 10 elementos. La forma correcta de accesar la lista es dentro de los límites de la misma, por ejemplo:
Código Delphi
[-]
for i := 0 to StrList.Count-1 do
ShowMessage(StrList.Strings[i]);
Igualmente si tratáramos de asignar un valor negativo al índice de la lista, por ejemplo -1, nos daría el error
List index out of bounds (-1) por las mismas razones comentadas anteriormente.
Espero sea útil
Nelson.