PDA

Ver la Versión Completa : constantes temporales


Crandel
16-01-2007, 17:40:58
Hola amigos, tengo definido varios valores constantes, principalmente de consultas SQL que se ejecutan cuando se inicia la aplicacion.

Voy verificandi algunas cosas y de acuerdo a ello ejecuto otras.

El tema es que esas consultas no se utilizan mas durante la vida del programa. Por lo que me imagino siguien viviendo hasta que termine mi aplicacion.

Como hago para liberar su memoria una vez terminado la fase inicial, deberia definirlas dentro de un objeto para asi liberarlas?

BuenaOnda
16-01-2007, 17:54:21
Hola... hasta donde yo sé, las constantes no cambian su valor durante toda tu aplicación.. lo que puedes hacer es utilizar variables publicas..

por ejemplo si utilizas funciones, procedimientos o variables públias, podrias declararlas en un TDataModule y luego incluir la unit de este DataModule, en todos los Forms que desees utilizar los procedimientos, funciones o variables,pertenecientes al DataModule.

espero que te sirva...:)

dec
16-01-2007, 18:10:30
Hola,

A riesgo de meter la pata y ciñéndome a lo que entiendo se requiere... ¿qué tal parece lo siguiente?


var
DON_JOSE: string = '- Hola don José';
DON_PEPITO: string = '- Hola don Pepito';

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(DON_PEPITO +' '+ DON_JOSE);

Pointer(DON_JOSE) := nil;
Pointer(DON_PEPITO) := nil;

ShowMessage(DON_PEPITO +' '+ DON_JOSE);
end;

Crandel
16-01-2007, 18:11:40
mi idea no es cambiarle el valor, es solo destruirlas.

Crandel
16-01-2007, 18:21:48
Gracias Dec, algo asi estaba pensando.

Aunque ahora que lo pienso :rolleyes: , si las defino como variables, como hiciste se puede hacer directamente
DON_JOSE := '';

no es nada muy importante, solo ver si podia liberar un poco de la memoria que no necesito

dec
16-01-2007, 19:44:37
Hola,

Pues lamento no llegar yo tan abajo, pero, acaso con esto último que dices también estarías logrando lo que buscas. :)

delphi.com.ar
16-01-2007, 20:48:54
Si observas que es lo que hace el compilador con tus constantes, verás que no tendrás que preocuparte por la memoria, mas que por lo que ocupa en el propio ejecutable al cargarlo.

ContraVeneno
16-01-2007, 20:55:51
"Hola don pepito.... hola don jose....." mmmmmm.... eso me recuerda a algo de mi infancia, creo que una canción... pero no estoy seguro...:rolleyes:

Crandel
16-01-2007, 23:17:57
Si observas que es lo que hace el compilador con tus constantes, verás que no tendrás que preocuparte por la memoria, mas que por lo que ocupa en el propio ejecutable al cargarlo.

te refieres a que las constantes no son cargadas en memoria si no estan siendo ocupadas?

de que forma recomiendas observarlo?

Ya habia observado en el "Watch List" que no es posible ver el valor de las constantes si no estas en un metodo que las use, pero sucede lo mismo con las variables

roman
16-01-2007, 23:24:41
Una constante no ocupa espacio en memoria; simplemente porque ni siquiera existe una vez compilado el ejecutable. Es decir, si tienes:


const
PI = 3.15;

......

Area := PI*Radio*Radio;


el compilador sustituirá cada ocurrencia de la constante por su valor en el exe final, de forma que es como si hubieses escrito directamente:


Area := 3.15*Radio*Radio;


// Saludos

Crandel
16-01-2007, 23:46:48
gracias a todos, entonces asunto solucionado :D y sin escribir una sola linea de código.

dec
17-01-2007, 00:53:02
Hola,

- Hola don Pepito
- Hola don José...

PD. Léase cantando (http://www.youtube.com/results?search_query=Hola+don+pepito&search=Search), claro.