![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
Duda sobre creación de clase (Free y Destroy)
Hola a todos.
Estoy haciendo una clase, y la verdad tengo poca experiencia creando clases y componentes, pues solía usarlas más que crearlas... Y al crearlas, uno "vé" otras cosas que no veía antes... Mi duda es sobre la redefinición de métodos. Concretamente Destroy, y si debo redefinir también el método Free. Código:
type TTipoHabitacion = class(TObject) private FId: string; FNota: TStrings; FPrefijo: string; public constructor Create; destructor Destroy; override; property Id: string read FId; property Nota: TStrings read FNota; property Prefijo: string read FPrefijo; end; TTiposHabitaciones = class(TObject) private FLista: TStrings; function GetItems(Index: Integer): TTipoHabitacion; public constructor Create; destructor Destroy; override; procedure Actualizar; property Items[Index: Integer]: TTipoHabitacion read GetItems; default; property Lista: TStrings read FLista; end; Ahora incluyo el código de la implementación (resumido) de TTiposHabitaciones: Código:
constructor TTiposHabitaciones.Create;
begin
inherited Create;
FLista := TStringList.Create;
Actualizar;
end;
destructor TTiposHabitaciones.Destroy;
begin
inherited Destroy;
end;
procedure TTiposHabitaciones.Actualizar;
var
I: Integer;
Qry: TMiQuery;
TH: TTipoHabitacion;
begin
try
Lista.Clear;
// Aqui debo liberar FLista, incluido los objetos que ésta posea
// Sé que debo usar Free, pero si Free no lo he redefinido,
// Cómo se libera la lista realmente?
Qry := BD.QryNuevo;
with Qry do
begin
Close;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM TiposHab');
Open;
for i := 1 to RecordCount do
begin
TH := TTipoHabitacion.Create;
TH.FID := FieldByName('Id').AsString;
TH.FPrefijo := FieldByName('Prefijo').AsString;
// TH.FNota := ...
Lista.AddObject(TH.FID, TH);
Next;
end;
end;
finally
Qry.Free;
end;
end;
function TTiposHabitaciones.GetItems(Index: Integer): TTipoHabitacion;
begin
Result := TTipoHabitacion(FLista.Objects[Index]);
end;
Código:
destructor TTiposHabitaciones.Destroy;
begin
FLista.Free;
inherited Destroy;
end;
Estoy medio confundido con eso . Si alguien me pudiera echar una manita, le estaría muy agradecido.Muchas gracias de antemano. Un cordial saludo a todos |
|
#2
|
||||
|
||||
|
Cita:
Cita:
Cita:
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#3
|
||||
|
||||
|
Cita:
// Saludos |
|
#4
|
||||
|
||||
|
¡Hola a todos!
Cita:
Cuando un objeto TObjectList tiene su propiedad OwnsObjects en True, los objetos de la lista son destruidos (liberados) automáticamente cuando éstos son eliminados de la lista y cuando el objeto lista contenedor es destruido. Espero esto sea de utilidad, seguimos en contacto. Al González. ![]() |
![]() |
|
|
|