Apuntadores a Objetos
Hola: Charl Linssen
Mi problema es básicamente el siguiente:
Tengo que crear un componente en run time, dicho componente lo derivo de la clase TspeedButton y posteriormente lo agrego un par de cositas (como un label y un apuntador al siguiente elemento, y una par de variables más), pero no solo tengo que crearlo, siono que ademas debo de generar una lista enlazada de dichos componentes y seguirles la pista durante la ejecución, según yo se hace a travea de apuntadores, pero la verdad es de que ya me duele la cabeza intentado hacer esto y no lo logro, te mando algo del código que tengo y espero que me puedas ayudar en algo.
TMesa= Class(TSpeedButton)
Public
IdMesa : Integer;
Entrada : TTime;
Salida : Ttime;
Etiqueta : TLabel;
Siguiente: ^TMesa;
end;
For i := 1 To DataMod.TMesas.RecordCount Do
Begin
Mesa := Tmesa.Create(Self);
If i = 1 then
Begin
Primera := @Mesa;
Ultima := Addr(Mesa);
End
Else
Begin
Ultima^.siguiente := Addr(Mesa);
Ultima := Addr(Mesa);
End;
El problema es que primera siempre apunta a Mesa, bueno cuando trato de desreferenciar Primera y realizar algo, siempre lo realizo sobre mesa que es la ultima que se creo, quiero suponer que esto se debe a que en realidad Mesa es un apuntador a un objeto, ¿pero entonces como hago para que pueda crear una lista enlazada de estos objetos? .. Bueno de antemano mucha gracias por tu atención
Mi problema es básicamente el siguiente:
Tengo que crear un componente en run time, dicho componente lo derivo de la clase TspeedButton y posteriormente lo agrego un par de cositas (como un label y un apuntador al siguiente elemento, y una par de variables más), pero no solo tengo que crearlo, siono que ademas debo de generar una lista enlazada de dichos componentes y seguirles la pista durante la ejecución, según yo se hace a travea de apuntadores, pero la verdad es de que ya me duele la cabeza intentado hacer esto y no lo logro, te mando algo del código que tengo y espero que me puedas ayudar en algo.
TMesa= Class(TSpeedButton)
Public
IdMesa : Integer;
Entrada : TTime;
Salida : Ttime;
Etiqueta : TLabel;
Siguiente: ^TMesa;
end;
For i := 1 To DataMod.TMesas.RecordCount Do
Begin
Mesa := Tmesa.Create(Self);
If i = 1 then
Begin
Primera := @Mesa;
Ultima := Addr(Mesa);
End
Else
Begin
Ultima^.siguiente := Addr(Mesa);
Ultima := Addr(Mesa);
End;
El problema es que primera siempre apunta a Mesa, bueno cuando trato de desreferenciar Primera y realizar algo, siempre lo realizo sobre mesa que es la ultima que se creo, quiero suponer que esto se debe a que en realidad Mesa es un apuntador a un objeto, ¿pero entonces como hago para que pueda crear una lista enlazada de estos objetos? .. Bueno de antemano mucha gracias por tu atención
1 respuesta
Respuesta de armageddon
1