Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-01-2005
Avatar de Xianto
Xianto Xianto is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nací en Neuquén (ARG), desde 2001 Spain
Posts: 151
Poder: 20
Xianto Va por buen camino
Problema de memoria...

Buenas...

Debido a una necesidad personal he hecho una app para que busque y reemplaze texto en archivos de manera recursiva en un directorio o varios...

Para probarlo descomprimi en un dir un php-nuke completo, y luego con el programilla intente cambiar en todos los archivos y todas las carpetas lo que dijera "php" por "pepino" y funciono muy bien, luego al intentar nuevamente cambiar "pepino" por "meduza" me da el tipico error de memoria.

Entonces busque los create para liberarlos, pero todo estaba bien... al ser solo un formulario no uso nada extraño, ya que solo es un form.
Lo interesante es que cierro la app la abro, cambio en ese mismo dir "pepino" por "meduza", luego voy a otro dir distinto y cambio "pepe" por "pepa" y no me da fallos...

La verdad es que estoy perdido, intente buscar la linea donde da el fallo, pero es imposible, ya que en una funcion recursiva de busquedad de todos los archivos llega a unos 5621 carpetas y tengo que estar con el F8 hasta que llegue a esa linea que me da problema, porque sino al fallar me aparece el debug de memoria...

He aquí la función en discordia:

Código Delphi [-]
 
procedure TForm1.Rastrear(dir: string);
   var
    sr: TSearchRec;
begin
   if FindFirst (Dir+'\*.*', faDirectory, sr)=0 then
   begin
       while FindNext(sr)=0 do
         If (((sr.Attr and faArchive) <> 0) and (Pos(st, sr.Name)>0)) then
         begin
           FList.Add(Dir+'\'+sr.Name);
           tempo := tempo + 1;
           Label4.Caption := 'Archivos hallados: ' + IntToStr(tempo);
         end;
       Application.ProcessMessages;
       IPosi := IPosi + -1;
       FindClose(sr);
       If IPosi > -1 Then
         Rastrear(DList[IPosi]);
   end;
end;

No se, alguna idea de lo que puedo mirar ???
__________________
El diseño dira si tiene futuro...
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 22:02:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi