FoxPro/Visual FoxPro - No hay suficiente memoria....

 
Vista:

No hay suficiente memoria....

Publicado por Sergio (89 intervenciones) el 12/05/2004 21:19:16
"No hay suficiente memoria para completar esta operación" es lo que me dice el VFP7 cuando realizo en mi programa varios procedimientos largos que a su vez entran en otros procedimientos largos, etc...
Alguien sabría decirme como puedo liberar todo tipo de memoria en el visual? A modo de ejemplo, en Clipper existe un "blinkpak" que empaquetaba la memoria y te la dejaba "compacta", es decir, una forma de limpiar la memoria, pero no encuentro nada parecido en el visual.
Si lo supierais, por favor, indicarme todos los posibles pasos xq es de vital importancia en mi programa.
Un saludo y gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No hay suficiente memoria....

Publicado por Roman Suazo (2723 intervenciones) el 13/05/2004 03:28:30
Checa la funcion SYS(3050) para optimizar el uso de memoria. Resulta
que el fox toma mas memoria de la que necesita. Con esta funcion puedes jugar para asi determinar cuanta memoria ocupara determinadas apps. Entre 16 megas o 32, seran mas que suficiente
para la mayoria de las apps
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No hay suficiente memoria....

Publicado por Sergio (89 intervenciones) el 13/05/2004 10:41:10
He probado lo que me has escrito y me sigue saliendo lo mismo. Le he puesto 32Mb tanto al primer plano como al segundo. Para darte mas pistas, mi aplicación no usa la ventana principal del Visual, vamos que tengo un formulario de nivel superior independiente de la ventana principal que la oculto. Con esto que te he dicho, cual usaria yo? Primer plano o segundo? y por memoria que no quede porque tengo 512Mb, pero para los clientes esto es esencial solucionarlo tanto para ellos como para mi.
Un saludo y gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No hay suficiente memoria....

Publicado por Roman Suazo (2723 intervenciones) el 13/05/2004 16:54:32
En ese caso lo mas seguro es que hay algo mal en tu codigo, en donde estas teniendo
fuga de memoria o estas aplicando mal una rutina de recursion (la recursion en VFP solo acepta como 125 niveles), etc. Dinos a largos razgos que lo que estas tratando de ejecutar o lograr en tu codigo y el por que tu crees que el programa esta consumiendo muchos recursos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No hay suficiente memoria....

Publicado por Sergio (89 intervenciones) el 13/05/2004 17:30:40
La recursión en mi caso no supera los 125 niveles, a tanto no llega, lo único es que es un programa dedicado a gestión de personal (nóminas) y necesita de mucho cálculo. Además, el código proviene de otro basado en MS-DOS y hecho en Clipper, por lo que es practicamente el mismo código. En este código, el "blinker" se usa para compilar y escribiendo "blinkpak", te compacta la memoria no usada, es decir, es como si la desfragmentara y liberara lo que no es necesario.
Lo único que me gustaría saber es como liberar o "empaquetar" la memoria para que en los cálculos no se me quede sin memoria.
Un saludo y gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No hay suficiente memoria....

Publicado por Roman Suazo (2723 intervenciones) el 14/05/2004 04:43:35
Ok, algunos tips:

-Trata de usar otro algoritmo en vez de recursion, la recursion es mas elegante pero lleva mas memoria y es mas dificil de depurar

-Instala la ultima version del service pack del VFP en cuestion, la version
6, por ejemplo, llega a la numero 5

-Usa el RELEASE cuando sea necesario para liberar la memoria, ademas despues de liberarla pon algo asi _Screen.Visible = _Screen.Visible

-borra el archivo foxuser.dbf

-Ojo los codigos viejos pueden ser peligrosos, por ejemplo, al pasar
los datos de una tabla a un arreglo procura que el arreglo haya sido inicializado con un numero aceptable antes de pasarle los datos de la tabla (los arreglos tienen un limite que s epuede romper al pasarle registros de una tabla)

Checa el SYS(1104) y el FLUSH

Si usas el w98, quitale una RAM y haz la prueba, parece que el w98 con
VFP mas memoria mayor de 500 megas puede causar problemas.


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar