Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-05-2005
istradlin istradlin is offline
Miembro
 
Registrado: feb 2005
Posts: 58
Poder: 20
istradlin Va por buen camino
Quitar variable de memoria

Tengo una aplicacion y en determinado momento necesito una variable
cadenaSQL:string; que uso para construir y guardar una consulta SQL, luego ese string se lo meto a un datset y ya no o vuelvo a necesitar en principio, ¿como hago para quitar el string de momoria? puede ser dispose o algo asi? cual es la sintaxis.


un saludo.
Responder Con Cita
  #2  
Antiguo 02-05-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Puedes quitar el contenido del string, pero hasta donde yo se, no puedes quitar "amablemente" el puntero de esta variable, este vivirá dentro de su scope.

Código Delphi [-]
  sVariable := '';

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 02-05-2005
istradlin istradlin is offline
Miembro
 
Registrado: feb 2005
Posts: 58
Poder: 20
istradlin Va por buen camino
ok, a lo largo de la aplicacion tendre cuatro o cinco strings de esa forma, no ocupan mucho en memoria no?, o me sera mejor poner una unica. Es decir podria poner esa string en un modulo de datos que estoy usando para la base de datos y usarla cuando necesite?
Responder Con Cita
  #4  
Antiguo 02-05-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 26
delphi.com.ar Va por buen camino
Creo que la ayuda es mas que clara:
Cita:
A string represents a sequence of characters. Delphi supports the following predefined string types.

String types
Type Maximum length Memory required Used for
ShortString 255 characters 2 to 256 bytes backward compatibility
AnsiString ~2^31 characters 4 bytes to 2GB 8-bit (ANSI) characters, DBCS ANSI, MBCS ANSI, etc.
WideString ~2^30 characters 4 bytes to 2GB Unicode characters; multi-user servers and multi-language applications
AnsiString, sometimes called the long string, is the preferred type for most purposes.
String types can be mixed in assignments and expressions; the compiler automatically performs required conversions. But strings passed by reference to a function or procedure (as var and out parameters) must be of the appropriate type. Strings can be explicitly cast to a different string type (see Typecasts).
The reserved word string functions like a generic type identifier. For example,

var S: string;

creates a variable S that holds a string. In the default {$H+} state, the compiler interprets string (when it appears without a bracketed number after it) as AnsiString. Use the {$H-} directive to turn string into ShortString.
...
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 02-05-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por istradlin
...ok, a lo largo de la aplicacion tendre cuatro o cinco strings de esa forma, no ocupan mucho en memoria no?, o me sera mejor poner una unica...
Es mejor que definas las variables de forma privada donde las necesites.
Creo que definir una variable Global (para no definir 4 o 5 en otros lugares) para evitar espacio es un error. Dada la memoria que puede ocupar un programa hoy en día, el espacio de memoria de 5 variables de tipo String en comparación es ínfimo.
Además las variables privadas (por ejemplo definidas dentro de una función) se destruyen cuando se termina la llamada a esa función, por lo tanto, al final seguramente acabarás ahorrando memoria.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 02-05-2005
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Ten en cuenta que Delphi maneja MUY eficientemente los strings. Creo que debes venir de programar en C++ donde es una patada en el higado y tiene mas sentido la pregunta... pues la verdad los strings en Delphi dan sopa y seco a todos los demas.

Delphi automaticamente administra la memoria de los strings, reclamando y liberando de forma dinamica. Lo que debes hacer es usar Var: String sin definirle un tamaño (para que no sea un ShortString) y todo listo.

Las variables que se definen dentro de las funciones/metodos tienen un manejo mas optimo que las globales. Ademas una cadena de Sql? eso es pan comido... No hay manera que por ese uso te quedes sin memoria. Ademas, es buena practica de desarrollo no usar variables globales mientras existan otras alternativas.

Asi que para resumir: No consumen mucha memoria y Delphi la libera perfectamente.
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 02-05-2005
istradlin istradlin is offline
Miembro
 
Registrado: feb 2005
Posts: 58
Poder: 20
istradlin Va por buen camino
ok, muchas gracias a todos, me habeis ayudado, declarare entonces variables locales pq van a estar en la funcion click que llama a un formulario que construye una sql a partir de las selecciones que haga el usuario de manera grafica y luego guardo esa sql en la string para asignarla a un data set


gracias a todos, un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:34:26.


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