Ver Mensaje Individual
  #6  
Antiguo 21-12-2013
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Revisa que tu consulta SQL esté arrojando al menos un resultado. De no ser así, el combo estará vacío y de allí el error "índice fuera del límite".
El query sí devuelve un resultado; de hecho ha de devolver sólo un resultado. Es que además el problema no es ese. El combo se carga con seis elementos en el OnCretae del formulario y los valores son fijos mientras se ejecuta y cuando empiezo a recorrer el bucle, con el primer valor (nItem = 0) se ejecuta bien y como el resultado de la consulta es diferente del object pasa al segundo (nItem = 1), y es en ese momento cuando salta el error: al comparar el valor de la consulta con el object, es como si tratara de ir un índice más allá de lo que corresponde
He probado otra cosa:
Código:
for (int nItem = 0; nItem < Combo->Items->Count; nItem ++)
{
     Valor = (long)(TObject*)Combo->Items->Objects[nItem];
     if (Valor == Query->FieldByName("Situacion")->AsInteger)
     {
          Combo->ItemIndex = nItem;
          break;
     }
}
y me da el mismo error. Sin embargo, si recorro el combo con este código:
Código:
AnsiString Cadena;
long Valor;

for (int i = 0; i < Combo->Items->Count; i++)
{
    Cadena = Combo->Items->Strings[i];
    Valor = (long)(TObject*)Combo->Items->Objects[i];
    ShowMessage("Cadena:" + Cadena + "\nValor: " + IntToStr(Valor));
}
Me muestra los seis valores que tiene cargados el elemento.

Última edición por Angel.Matilla fecha: 21-12-2013 a las 10:52:24.
Responder Con Cita