FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema usando el objeto TStrings
Hola:
Tengo este código: procedure Tfr_principal.lb_buscarClick(Sender: TObject); var vr_tags: TStrings; begin vr_tags.Append('texto'); end; Quiero utilizar el objeto TStrings para crear una lista de textos, pero al intentar crear el primer elemento de la lista, me aparece este error: http://mpo9qg.bay.livefilestore.com/...asd.jpg?psid=1 ¿qué es lo que anda mal? Gracias. |
#2
|
||||
|
||||
Hola.
Antes de utilizar vr_tags tenés que crear una instancia de la clase. Como TStrings es abstracta debés usar un descendiente en la creación, por ejemplo TStringList.
En algún punto, luego que termines de usar vr_tags, deberias liberar el recurso con:
Saludos. Última edición por ecfisa fecha: 15-10-2010 a las 20:43:21. |
#3
|
||||
|
||||
Primero tienes que crear el objeto, para despues utilizarlo:
No debes olvidar liberar el objeto después de finalizar con su uso. |
#4
|
|||
|
|||
Muchas gracias. Ha funcionado. Una interrogante más: ¿Qué sucedería si no la libero?
|
#5
|
||||
|
||||
Hola
Si no la liberas y vuelves a llamar al evento dirá que el TStrings ya esta creado y no lo puede volver a crear dando error. Si no me equivoco. Saludos
__________________
Siempre Novato |
#6
|
||||
|
||||
Cita:
degradación de la perfomance y hasta fallos por falta de memoria. En un ejemplo como ese, realmente no es apreciable la memoria ocupada. Pero es importante tomár como práctica la liberación de los recursos utilizados; por que la memoria, aunque hoy es abundante, sigue siendo finita... Saludos. Última edición por ecfisa fecha: 15-10-2010 a las 22:25:39. |
#8
|
||||
|
||||
Hola.
Por si quedara alguna duda te pongo un ejemplo con el que podés comprobar el efecto de no liberar recursos:
Dale unos cuantos clicks al botón y me contas... Saludos. |
#9
|
||||
|
||||
Hola
Bien: Entonces suponemos que free libera la memoria, no?. Siguiendo tu ejemplo, que pasa aqui amigo?: Que hago mal? Saludos
__________________
Siempre Novato |
#10
|
||||
|
||||
Hola mi amigo.
No estás haciendo nada mál, lo que sucede que la intención del código que puse de ejemplo es precisamente forzar un error por falta de liberación de recursos. Es decir que nada correcto saldrá si nos basamos en ese código. Ahora si me limito al código que adjuntaste, el problema es que en Button1Click se crean un millon de instancias de TStrings y en Button2Click sólo se puede liberar una. Saludos. Última edición por ecfisa fecha: 16-10-2010 a las 02:39:08. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema de objeto que hereda de Timage | astwin | OOP | 3 | 29-08-2010 19:21:22 |
Problema con aplicacion usando BDE | yorgelis | Conexión con bases de datos | 14 | 09-04-2009 17:01:34 |
Problema con consultas usando ADO | Garry | Tablas planas | 5 | 23-01-2008 10:07:08 |
Problema con Asignacion a un Objeto. | BEPAI | Varios | 12 | 10-04-2007 13:28:35 |
Problema con Filter y EOF usando TTable | El_Raso | Conexión con bases de datos | 0 | 20-03-2007 19:35:35 |
|