Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-04-2009
Avatar de josuk
josuk josuk is offline
Registrado
 
Registrado: abr 2009
Posts: 3
Poder: 0
josuk Va por buen camino
vaya, vaya

Muchas gracias Román, qué velocidad en responder!... y qué ridículo me siento ... efectivamente estaba utilizando un índice fuera de rango... y claro, por defecto Delphi no avisa de estos "detalles"...

El código que tengo entre manos realmente es bastante más complejo y cada objeto de los que he llamado Habitacion tienen a su vez varios arrays de objetos anidados y me volví loco buscando el error en algo menos "obvio" que un índice... bueno, no tengo excusa.

Entendido lo de las etiquetas

Gracias de nuevo!

PD.: Enhorabuena por este foro que ya había visitado en alguna ocasión y en el que por fín participo... espero ser útil en otra ocasión.
Responder Con Cita
  #2  
Antiguo 17-11-2009
gerardus gerardus is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
gerardus Va por buen camino
Hola Josuk,

Tienes la opción de usar listas de objetos en vez de arrays:

Código Delphi [-]
  uses contnrs; // requerido por TObjectList

  TCasa = class (TObject)
  private
    FHabitaciones: TObjectlist;
    function GetHabitaciones(Index: integer): Thabitacion;
    function GetNumerohabitaciones: integer;
  public
    constructor create;
    destructor destroy override;
    function AddHabitacion : THabitacion;
    property Habitaciones[Index: integer]: Thabitacion read GetHabitaciones;
    property Numerohabitaciones: integer read GetNumerohabitaciones;
  end;



function TCasa.AddHabitacion: THabitacion;
begin
  Result := THabitacion.Create;
  FHabitaciones.Add(Result);
end;

constructor TCasa.create;
begin
  inherited Create;
  FHabitaciones := TObjectList.Create(True); // True destruye los objetos de la lista al ser destruido
end;

destructor TCasa.destroy;
begin
  FHabitaciones.Free;
  inherited;
end;

function TCasa.GetHabitaciones(Index: integer): Thabitacion;
begin
  Result := THabitacion(FHabitaciones[Index]);
end;

function TCasa.getNumerohabitaciones: integer;
begin
  Result := FHabitaciones.Count;
end;

Cordialmente,

Gerard.

Última edición por gerardus fecha: 17-11-2009 a las 10:57:54.
Responder Con Cita
  #3  
Antiguo 17-11-2009
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Ya puestos... ¿por qué no heredar de TobjectList?
Código Delphi [-]
unit Unit1;

interface

uses Contnrs;
type THabitacion = class(TObject)
  public
    id :integer;
end;


type THabitacionList  = class(TObjectList)
  private
    function GetItem(Index: Integer): THabitacion;
    procedure SetItem(Index: Integer; const Value: THabitacion);
  public
    function Extract(Item: THabitacion): THabitacion;
    function First: THabitacion;
    function Last:THabitacion;
    property Items[Index: Integer]: THabitacion read GetItem write SetItem; default;
  end;
  


implementation


{ THabitacionList }

function THabitacionList.Extract(Item: THabitacion): THabitacion;
begin
  result := THabitacion(inherited Extract(Item));
end;

function THabitacionList.First: THabitacion;
begin
  result := THabitacion(inherited First);
end;

function THabitacionList.GetItem(Index: Integer): THabitacion;
begin
  result:= THabitacion(inherited GetItem(Index));
end;

function THabitacionList.Last: THabitacion;
begin
  result := THabitacion(inherited Last);
end;

procedure THabitacionList.SetItem(Index: Integer; const Value: THabitacion);
begin
  inherited SetItem(Index, Value);
end;

end.

No es necesario todo el código... pero a mí me gusta así.

PD: Yo uso un experto de cnpacks que hice, sólo escribo "Habitacion" un clic de ratón... y se escribe todo eso.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 17-11-2009
gerardus gerardus is offline
Miembro
 
Registrado: dic 2007
Posts: 43
Poder: 0
gerardus Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
Ya puestos... ¿por qué no heredar de TobjectList?
Es perfectamente valido.

Cita:
Empezado por Lepe Ver Mensaje
PD: Yo uso un experto de cnpacks que hice, sólo escribo "Habitacion" un clic de ratón... y se escribe todo eso.
Yo uso el ModelMaker Code Explorer, que tambien permite usar plantillas de clases predefinidas (Entre muchas otras cosas). Tendré que echar un vistazo al cnpack, a ver que tal.

Cordialmente,

Gerard
Responder Con Cita
  #5  
Antiguo 17-11-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 20
rgstuamigo Va por buen camino
Arrow

Bueno.tambien si esta usando Delphi 2009 o superior tambien podria usar los generico especificando que tipo de dato introducira en la lista y sin codificar casi nada.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 17-11-2009
Avatar de josuk
josuk josuk is offline
Registrado
 
Registrado: abr 2009
Posts: 3
Poder: 0
josuk Va por buen camino
Thumbs up

Hola compañeros,

Gerardus, buena opción la que propones, ciertamente le da bastante formalidad y elegancia al planteamiento.

Y bueno Lepe, nada como optimizar, tanto la idea como el código.

Gracias por vuestro tiempo y punto de vista.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Olvidar liberar punteros, objetos, etc. walito Varios 3 06-01-2008 01:51:47
Liberar Objetos II OscarG OOP 12 11-10-2005 10:13:55
liberar objetos OscarG OOP 13 06-10-2005 18:49:18
Liberar objetos que se han añadido a un TList neon OOP 3 07-10-2004 18:47:54
Liberar un matriz de objetos soul6301 Varios 8 04-08-2004 09:19:53


La franja horaria es GMT +2. Ahora son las 03:24:24.


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