Ver Mensaje Individual
  #3  
Antiguo 27-09-2007
fonx fonx is offline
Miembro
 
Registrado: feb 2007
Posts: 54
Reputación: 18
fonx Va por buen camino
No funciona, casca al hacer el close y no libera memoria. Este es el mensaje:

Project xxx.exe raised exception class EOleException with message 'El valor de BOF o EOF es True, o el actual registro se eliminó: la operación solicitada requiere un registro actual'


Código:
while true do
  begin
    Prueba();
  end;
Código:
Procedure Prueba();
Var
   difAnt:real;
   i:integer;
   error:boolean;
   query:TADOQuery;
begin
   Try
   query :=TADOQuery.create(nil);
   query.Connection:=AC1;
   query.SQL.text:=('SELECT * FROM Datos WHERE Historico=No');
   query.Open();
   For i:=1 to query.recordcount do
   begin
      query.next;
   end;
   query.close;
   query.Free;
   Except
      error:=true;
   end;

end;
También probé esta forma:
Código:
Procedure Prueba2();
Var
   difAnt:real;
   i:integer;
   error:boolean;
   query:TADOQuery;
begin
   Try
   query :=TADOQuery.create(nil);
   query.Connection:=AC1;
   query.SQL.text:=('SELECT * FROM Datos WHERE Historico=No');
   query.active:=true;
   For i:=1 to query.recordcount do
   begin
      query.next;
   end;
   query.Destroy;
   Except
      error:=true;
   end;

end;
No libera memoria, ese bucle infinito no para de coger memoria...Casca al hacer el close() o el destroy(). Esto pasa cuando:
  • el query no tiene registros, entonces EOF = true.
  • el query esta posicionado en el ultimo registro, entonces EOF = true.
Si hay registros lo tengo facil porque solo tengo q hacer query.First y ya me lo libera, pero si no hay registros el query no se libera y me queda esa memoria sin liberar...¿Será un bug del Delphi5?
Responder Con Cita