![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
¿Cómo usar un Pointer?
Hola a todos, como se utiliza un pointer?
tengo un treeview y estoy intentando almacenar informacion en la propiedad Data de los nodos, q es TPointer, pero ni idea de por donde cogerlo. Saludos a todos. |
|
#2
|
||||
|
||||
|
Creo que es esto lo que necesitas.
Código:
type TCadena=String[255];
type TEnCD=record // el regisro asociado a cada nodo del TTreeview
Titulo,
Categoria,
RutaEnCD,
Comentario :Tcadena;
end;
type TpEnCD=^TEnCD;
// TpEnCD es un tipo de datos que será un puntero al registro TEnCD
var pn:TpEnCD;
begin
try
begin
new(pn); // creamos el espacio en memoria
pn^.Titulo:=edit1.text;
pn^.RutaEnCD:=edit2.text
pn^.Comentario:=richedit1.text;
pn^.Categoria:='CD sin categorias';
data := pn;
// y para recuperarlo :
pn := TpEnCD(Data);
// o bien
Showmessage(TpEnCD(Data)^.Titulo)
// para liberar de memoria:
dispose (TpEnCD(Data));
|
|
#3
|
||||
|
||||
|
Algo muy importante: Al tratarse de punteros, luego queda en tus manos el echo de liberar la memoria utilizada por lo que apunte estos punteros, la metodología a utilizar, es asignar el puntero después que se crea el TTreeNode y lo importante que te quiero comentar, es utilizar el evento OnDeletion, para liberar la memoria utilizada por este puntero.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#4
|
||||
|
||||
|
Con la idea de Lepe puedes usar el puntero para guardar un registro en cada nodo.
También te comento que dado que los objetos son a fin de cuentas punteros puedes guardar directamente objetos en cada nodo haciendo el moldeo adecuado: Data := Pointer(UnObjeto) // asignar el objeto UnObjeto := TUnObjeto(Data) // recuperar el objeto Esto, claro está, no invalida el hecho de tener que liberar recursos como apunta delphi.com.ar usando el método Free del objeto en el evento OnDeletion. // Saludos |
|
#5
|
||||
|
||||
|
Cita:
![]() Saludos |
![]() |
|
|
|