Ver Mensaje Individual
  #3  
Antiguo 30-03-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
Cool

Es una saludable práctica de programación destruir todo objeto que se cree cuando deja de ser útil. En tu caso, crear instancias de objetos asignadas a variables locales debería obligarte, cuando menos, a destruirlas antes de salir del procedimiento.

Esto alivia, no solo el problema en cuestión, sino el mas grave problema de consumir recursos y jamás devolverlos, con lo cual la ya frecuente necesidad de reiniciar de windows puede volverse un verdadero dolor de cabeza.

El código quedaria algo asi:

Código Delphi [-]
procedure pepe()
var rec: integer;
    vIndex: integer;
    ADORecs: array [0..4] of TADODataSet;
begin
  vIndex := 0;
  ADORecs[vIndex] := TADODataSet.Create(Self);
  try
    with ADORecs[vIndex] do
      begin
        Name := 'ADORecs'+IntToStr(vIndex);
        CursorType := ctStatic;
        LockType := ltReadOnly;
      end;
     ..........
  finally
    for x :=  0 to 4 do
      AdoRecs[0].Free;
  end;
end;

Lo he encerrado el un bloque try/fianlly para que se libere sin problemas aún cuando ocurra alguna excepción en la ejecución del bloque.

Saludos.
Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita