Ver Mensaje Individual
  #6  
Antiguo 05-11-2010
Avatar de JoseAntonio
JoseAntonio JoseAntonio is offline
Miembro
 
Registrado: abr 2006
Ubicación: Lima - Ciudad de los Reyes.
Posts: 87
Reputación: 19
JoseAntonio Va por buen camino
Gracias Maeyanes

En realidad los otros niveles si tienen el nodo.data asignado pero a un entero

nodo.data := integer(iCliente) por eso la funcion mejorada de liberacion de nodos quedo asi
Código Delphi [-]
procedure TfrmMain.FreeNodes2(ARaiz: TTreeNode);
var
  I: Integer;
  RecNode: PRecNode;
begin
  for I := 0 to Pred(ARaiz.Count) do
    // Si Node.Data no es nil estamos en el nivel 3, así que liberamos la memoria
    if (ARaiz.level = 3) then
    begin
      RecNode := PRecNode(ARaiz.Data);
      Dispose(RecNode)
    end
    else
        FreeNodes2(ARaiz[i])
end;

la liberacion de memoria sigue estando lenta pero lo solucione impidiendo que cierre el formulario. Cuando se cierre el aplicativo (cosa que si se hace rapidamente) supongo que windows eliminara automaticamente todos los punteros creados por el aplicativo... o opor los menos eso espero
__________________
nuestro carácter está reflejado en cada línea de código que escribimos.
Responder Con Cita