FoxPro/Visual FoxPro - valores devueltos con sys(1016) y sys(1001)

 
Vista:

valores devueltos con sys(1016) y sys(1001)

Publicado por Sergio (89 intervenciones) el 11/04/2005 19:57:57
Hola foxeros. Sigo teniendo problemas con la memoria y los valores que me devuelve son los siguientes (para vfp8):

VALORES DESPUÉS DEL ERROR 43:

SYS(1016) -> 2.216.024
SYS(1001) -> 1.073.741.824

VALORES RECIÉN EJECUTADA MI APP:

SYS(1016) -> 1.869.632
SYS(1001) -> 1.073.741.824

VALORES EN LA VENTANA DE VFP8:

SYS(1016) -> 949.488
SYS(1001) -> 1.073.741.824

¿Es mucho? ¿Este es realmente mi problema? ¿Qué puedo hacer para liberar esos objetos? ¿Alguna función que lo haga automaticamente?

Os agradeceria cualquier tipo de ayuda..
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

Nadie sabe como va esto?

Publicado por Sergio (89 intervenciones) el 13/04/2005 12:53:15
Alguien sabe que tipo de memoria es la que se queda sin recursos para que me dé el error 43 en VFP8?

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:valores devueltos con sys(1016) y sys(1001)

Publicado por Roman Suazo (2723 intervenciones) el 13/04/2005 18:21:09
No das mucha informacion para resolver el problema, es decir, cuando te ocurre el problema? al incializar el Fox o cuando corres un comando en especial o al azar?Por ejemplo, COPY ARRAY puede ser el problema (si no mal recuerdo) cuando tratas de crear arreglos que sobrepasan los limites del Fox te sale ese error y algunas veces ese error se quita borrando los archvios foxuser.dbf

Para tener un mejor control de la memoria en fox checa las funciones:
SYS(3050) y SYS(1104)
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Sergio (89 intervenciones) el 14/04/2005 13:20:14
Tienes razón, me he explicado poco pero es que este problema ya me está volviendo loco y no he encontrado nada que me dé la solución. Los archivos FOXUSER los he quitado directamente en las opciones, es decir, no se generan.

Normalmente es cuando accedo a una parte de mi menú (justo cuando va a hacer el despliege) despues de haber hecho varios procesos, pero tambien me puede ocurrir en cualquier otro sitio.

El sys(1104) lo hago casi constantemente para purgar caché pero aun así no uso mucho el almacenamiento en buffer en los procesos en los que me dá el error. Si hago los procesos directamente sin usar formularios (es decir, sólo el prg), no me dá errores, es más, creo que es un tema de los formularios que no se liberan correctamente de la memoria (los identificadores "SYS(1016) y SYS(1011)"aumentan cuando se crea el formulario y luego no vuelven a su estado original, es decir, imagina que antes de ejecutar un formulario tengo 3000 identificadores y luego al ejecutar el formulario tengo 13000, al irme del formulario no vuelvo a tener 3000 sino 3050 o más) pero tampoco sé que tipo de memoria es la que se queda sin recurso.

Cualquier cosa que necesites saber me lo comentas y te lo digo.

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:valores devueltos con sys(1016) y sys(1001)

Publicado por Roman Suazo (2723 intervenciones) el 14/04/2005 17:38:11
Anteriormente te habia dado algunas sugerencias, las eran relacionadas con la creacion de objeto en un punto X pero no la liberacion de los mismos...checa si creas objetos en los formualarios u otros objetos, de ser asi trata de liberarlos (oMiobjeto=.NULL.) de lo contrario se van a quedar en memoria ys e van estar creando cada vez que corras el formulario o creas el objeto. EL otro tip que te habia dado era correr algo asi _Screen.Visible = _Screen.Visible antes de cerrar cada formulario. Cuales fueron tus resultados al usarlos?

Trata de incializar el VFP con el switch -A . Busca en la ayuda acerca de los Switch lines. Ya instalaste el ultimo SP de la version que tienes?
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Sergio (89 intervenciones) el 14/04/2005 18:42:40
No he creado ningun objeto con CreateObject porque se me da mejor hacerlos con el diseñador de formularios (lo veo un poco complicado de la otra forma). El _screen.visible lo uso en muchas ocasiones y no me ha dado ningún resultado pero nunca lo he usado justo antes de hacer un "thisform.release" en el propio formulario.

Lo del Switch lo he buscado en la ayuda y no he encontrado nada pero aun así lo buscaré en internet. De todas formas yo tengo mi propio ejecutable, lo tendría que ejecutar con ese parámetro?

El SP es el 1 del VFP8 que se necesitaba para poder poner la ayuda y los comandos en español.

Te doy las gracias de antemano en todo esto, si necesitas saber algo más solo tienes que decirmelo.
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Roman Suazo (2723 intervenciones) el 14/04/2005 19:16:18
Lo del Screen te puede funcionar cuando has hecho una operacion que ha tomado mucha memoria... no siempre la memoria de libera como se espera uno entonces ese codigo parece ayudar. Con las funciones puedes aumentar la memoria del VFP y reducirla asi que cuando vayas a correr un SELEC puedes aumentarla en caso de que sea necesario

Prueba el EXE en otra maquina, puede ser que la maquina que estas usando tengas memoria dañadas...

Lo del switch se aplica mas en el caso en que al usar el VFP el error aparezca..igual pruebalo y compila el exe de nuevo...

Por lo general estos errores ocurren cuando tienes "memory leaks" es decir no se liberan todos los objetos como se espera...asi que la memoria se llena en la medida en que se repitan ciertos proceso...
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Sergio (89 intervenciones) el 14/04/2005 21:18:31
En todas las máquinas en las que he probado el programa han dado el error.
Lo que no entiendo es lo que me dices con "correr un SELEC", si te refieres a consultas SQL, no tengo ninguna, aun así, como aumento o disminuyo la memoria que me dices? ¿con el SYS(3050)? ¿y a cuanto? ¿probando valores?

Lo que voy a probar es arrancar el VFP8 con el "-A", supongo que será de la siguiente forma sino, me corriges:
en el acceso directo que tiene puesto "VFP8.EXE", poner "VFP8.EXE -A"

Muy agradecido...
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Roman Suazo (2723 intervenciones) el 14/04/2005 22:15:59
Lo que voy a probar es arrancar el VFP8 con el "-A", supongo que será de la siguiente forma sino, me corriges:
en el acceso directo que tiene puesto "VFP8.EXE", poner "VFP8.EXE -A"

Si, asi es la forma...

consultas SQL, no tengo ninguna, aun así, como aumento o disminuyo la memoria que me dices? ¿con el SYS(3050)? ¿y a cuanto? ¿probando valores?

Segun la capacidad que tengas o necesites... basicamente probando...
en terminos generales fox agarra mas memoria de la que necesita al principio....asi toma en consideracion eso. El tip que te di no es solo para SELECT, si no tambien, por ejemplo, cuando llenas una variable de muchos caracteres o vas acumulando valores grandes y cosas por el estilo...es decir cuando vas a ocupar mucha memoria
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Sergio (89 intervenciones) el 16/04/2005 12:18:45
Roman, he probado el "VFP8 -A" pero lo que me ha hecho es borrar la configuración que tenia predeterminada en el programa y seguía fallandome al compilarlo.
El sys(3050) lo he puesto al principio a 64 Mb y cuando he necesitado más memoria lo he aumentado a 128Mb pero me daba el error con el tiempo.
Lo que en realidad me gustaría saber es la memoria que se queda agotada para determinar cuando he de aumentarla o en todo caso cerrar el programa y volver a abrirlo. ¿sabes cuál es?
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Sergio (89 intervenciones) el 16/04/2005 12:23:31
Se me olvidaba preguntarte una cosa, ¿para qué sirve una consulta SQL? no lo tengo muy claro y no sé donde encontrar una buena ayuda sobre eso. Me consumiría menos memoria?
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Roman Suazo (2723 intervenciones) el 16/04/2005 23:21:21
Se me olvidaba preguntarte una cosa, ¿para qué sirve una consulta SQL? no lo tengo muy claro y no sé donde encontrar una buena ayuda sobre eso. Me consumiría menos memoria?

Para consultar o leer datos de las tablas, basicamente creas un cursor
temporal que tiene informacion basada en las restricciones que definiste...generalmente se usan en reportes o para mostar datos de lectura...Checa en la ayuda el comando SELEC SQL...usar los selecs te lleva mas memoria pero es mas ordenado y es facil recuperar la memoria que se consumio...solo borras el cursor

El sys(3050) lo he puesto al principio a 64 Mb y cuando he necesitado más memoria lo he aumentado a 128Mb pero me daba el error con el tiempo.

64 megas para un progarma es demasiado, especialmente para app con fox que en realidad consumen poco por lo general. Como dije, Fox agarra mas de lo necesario por lo general, asi que la gente tiende a quitarle...Creo que en general Fox te consume 16 megas o 32
(no me acuerdo) que por lo general es mas que suficiente. Hay algo raro en tu app, ya que 128 o 64 es demasiado y me parece (segun lo qe leo) que tu aplicacion no es muy compleja como para ameritar tanta memoria...solo necesitas las funciones que te di para aumentar y nada mas.

Tienes la version 6 el FOX? porque si la tienes me puedes mandar el proyecto hecho en esa version y yo lo probaria en esta maquina para ver que errores podria tener...o si no es muy grande mandamelo todo a lo mejor no usas tantas cosas del 8 y podria abrirlo aun asi con la version 6
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:valores devueltos con sys(1016) y sys(1001)

Publicado por Sergio (89 intervenciones) el 17/04/2005 21:30:55
Gracias por tu interes Roman. Se lo voy a comentar a mi jefe para ver si me deja enviarte parte del proyecto xq sí que es bastante grande. En cuanto se lo diga, te contesto con lo que sea.

Muchas gracias
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