Ver Mensaje Individual
  #1  
Antiguo 12-09-2007
Avatar de hjpires
hjpires hjpires is offline
Registrado
 
Registrado: sep 2007
Ubicación: Trelew - Chubut - Argentina
Posts: 7
Reputación: 0
hjpires Va por buen camino
Unhappy Error al utilizar Array dinámicos

Buenas tardes
Tengo una aplicación donde vuelco datos en un treeview y en un stringGrid dentro de la misma pantalla, además como hay datos que necestio utilizar pero que no es necesario mostrarlo por pantalla, tengo un array dinámico que lo dimensiono del mismo tamaño que el stringGrid y en él cargo los datos que necesito, pero que no quiero que se visualicen en el stringGrid.
Ahora bien, he logrado hacer todo esto, pero al ejecutar la aplicación me da un erro de violación de acceso a memoria.
He ejecuatdo el programa paso a paso y lo mas extraño es que el arraydinámico se llena por completo y la cancelación ocurre cuando el foco vuelve a la aplicación.

Les muestro parte del código para que sea más sencillo entender de qué hablo:

Código Delphi [-]
type
  TotrosCamposGrilla = Record
                        Requisito   : integer;
                        Clave       : string;
                        Obligatorio : Boolean;
                        Status      : String;
                       end;
var
  arrOtrosCamposGrilla: array of TotrosCamposGrilla;
 
procedure TfrmSeguimientoDig.LlenarGrilla;
begin
   setLength(arrOtrosCamposGrilla,dmDigesto.adoqDatosGrilla.RecordCount);
   dmDigesto.adoqDatosGrilla.First;
   While not dmDigesto.adoqDatosGrilla.Eof do Begin
      GrdElementos.RowHeights[GrdElementos.RowCount - 1]:= 16;
      arrOtrosCamposGrilla[grdElementos.RowCount - 1].Requisito  := dmDigesto.adoqRecursoRequisitos['idRequisito'];
      arrOtrosCamposGrilla[grdElementos.RowCount - 1].Clave      := dmDigesto.adoqDatosGrilla['Clave'];
      grdElementos.Cells[2,grdElementos.RowCount - 1] := dmDigesto.adoqDatosGrilla['Descrip'];
      grdElementos.Cells[3,grdElementos.RowCount - 1] := dmDigesto.adoqDatosGrilla['Detalle'];
      dmDigesto.adoqDatosGrilla.Next;
      grdElementos.RowCount := grdElementos.RowCount + 1;
   end; //while
   if dmDigesto.adoqDatosGrilla.RecordCount > 0 then
      grdElementos.RowCount := grdElementos.RowCount - 1;
end;
Responder Con Cita