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.