![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Has probado con un chequeador de Leaks como MemProof (gratis) o AQTime? Podria ser fragmentacion de memoria on un leak...
Estas seguro que es MEMORIA? No sera un asunto de encoding? Mencionas que lees archivos de texto de PHP Nuke y usas FList.Add. que supongo es un TStringList.... que usa Strings ANSI, y TAL VEZ estas cargando un archivo UNICODE con un encoding como UTF-8 u otro? Ademas, cual tipico error de memoria, seria bueno bueno saber... Ah... te recomiendo que uses algo como http://www.eurekalog.com/ para tener mejor informacion de los errores, junto al call stack, linea de error y demas....
__________________
El malabarista. |
|
#2
|
||||
|
||||
|
wenas... gracias por tu respuesta... mirare lo que me dices.
el error, al ejecutar el exe, sin el delphi... es: Stack Overflow jejeje, un bonito error ! Nota: El TStringList, lo uso para guardar la ruta de cada archivo, ejemplo: C:\php-nuke\administrator\pepe.php C:\php-nuke\administrator\pepa.php C:\php-nuke\admin.php Y asi, de esta forma en un TList tengo todos los archivos del directorio inicial, incluyendo todos los sub-directorios en una lista... y luego con otra funcion recursiva son leidos y analizados, para ver si contienen el patron utilizado... ahi es donde me sirve el TList, aunque en algunos casos llega a tener 8000 lineas o mas... depende lo que busques. Para abrir los ficheros segun la extension que elijas, uso FileOpen y FileSeek. Y para cambiar el texto uso AnsiReplaceText... Bue, sigo mirando !
__________________
El diseño dira si tiene futuro... Última edición por Xianto fecha: 28-01-2005 a las 17:11:37. |
|
#3
|
||||
|
||||
|
Ufffffffff.... vaya tonteria... aumente el Stack Size y listo... es lo que pasa con las funciones recursivas...
Max Stack Size = $00400000 Aunque baje el visor de problemas en http://www.eurekalog.com/ y resulta que es muy util... gracias por la info ! Saludetes !!!!
__________________
El diseño dira si tiene futuro... |
|
#4
|
||||
|
||||
|
Pero eso no es una solucion. Si la cantidad de directorios se duplica, no te volvera a pasar?
Me parece que cargas demasiado en el TStringList. Deberias, en mi opinion, hacer la parte de chequear si cumple o no con el patron directamente en el escaneo y no darle dos pasadas.
__________________
El malabarista. |
|
#5
|
||||
|
||||
|
Cierto... mirare un poco a ver si lo resuelvo quitando un poco de lienas del TList... pero sigo pensando que de cualquier manera necesito tener muchas lineas...
La otra opcion es usar un array que ocupa menos memoria que la TList...
__________________
El diseño dira si tiene futuro... |
|
#6
|
|||
|
|||
|
Cita:
Ademas un TList con decenas o cientos de miles de elementos no es nada para cualquier computadora normal. El problema es la llamada recursiva a la funcion, por cada llamada se ocupan 4 bytes de la pila. Ese algoritmo no es correcto, te basta un bucle normal sin recursividad para recorrer la lista. Un bucle normal aunque se ejecute millones de veces ocupa 0 de memoria, en cambio un millon de llamadas recursivas ocuparian 4 millones de bytes en la pila. Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|