Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   problema de memoria? (https://www.clubdelphi.com/foros/showthread.php?t=53461)

anubis 21-02-2008 06:02:52

problema de memoria?
 
Bueno, aprovechando que no tengo mucha oportunidad de tener internet, posteo otro poco.;)

Cuando tengo abierto el delphi y ejecuto la aplicacion a veces me da error de violacion de memoria y el contenido de las variables que tienen que pasar se pierden.

No se si sera lo mas ortodoxo, pero suelo usar (mientras no sepa otro ;)), almacenar las variables en el form principal y de ahi ya se van usando en otras units, se como pasar variables en procedimientos o funciones pero dentro de la misma unit no pasar variables de una unit a otra tal y como se haria con un procedimiento o funcion, de ahi que almacene algunas en la unit principal.

Resumiendo para no ser mas pesado que de contumbre;), esto de la violacion de memoria( a veces pasa y otras no en diferentes puntos del programa) es normal?

gracias a todos por la ayuda

marcoszorrilla 21-02-2008 06:50:54

No es normal que pase, generalmente se debe a que se hace referencia a algún componente o control que aún no se ha creado o que ya se ha destruido.

Un Saludo.

anubis 21-02-2008 07:44:00

gracias marcos, el problema es que suele suceder a veces aleatoriamente, porque no recoge el valor pasado, pero espero que solo ocurra usando el delphi, y no en el ejecutable

dec 21-02-2008 08:59:38

Hola,

Cita:

Empezado por anubis
(...) se como pasar variables en procedimientos o funciones pero dentro de la misma unit no pasar variables de una unit a otra tal y como se haria con un procedimiento o funcion, de ahi que almacene algunas en la unit principal.

En realidad el "conceto" es el mismo que con funciones y procedimientos, y cualquier otra cosa. Se trata de utilizar la cláusula "interface" y declarar ahí las variables que queramos que sean "globales", es decir, cualquier otra unidad que añada en alguno de sus "uses" la siguiente unidad podría utilizar las variables que se declaran en ella como globales:

Código Delphi [-]
Unit Globals;

interface

var
  IamGlobalVar: integer;
  IamAnotherGlobalVar: string;

implementation

end.

Si añades en otra unidad a "Globals" podrás usar las variables que ves arriba: de la misma forma que harías con una función, procedimiento, clase, tipo, constante o lo que fuera declarado en la cláusula "interface" de "Globals". ;)

Lepe 21-02-2008 12:11:59

Cita:

Empezado por anubis (Mensaje 267459)
gracias marcos, el problema es que suele suceder a veces aleatoriamente, porque no recoge el valor pasado, pero espero que solo ocurra usando el delphi, y no en el ejecutable

Si ocurre aleatoriamente ¿cómo hacer esa afirmación? ;).

Si ocurre con delphi (salvo algún bug del debugger, que ya es raro), debe suceder también en el ejecutable.

Tú sabes donde usas esas variables, prueba a cerrar un form y desde otro intentar rescatar el valor del anterior. Creo que ahí está la "aleatoriedad" ;) a veces cierras un form y otras veces no ;).

Saludos


La franja horaria es GMT +2. Ahora son las 22:00:13.

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