Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-02-2008
gandalf_uy gandalf_uy is offline
Miembro
 
Registrado: ene 2005
Posts: 39
Poder: 0
gandalf_uy Va por buen camino
Unhappy Array de objetos propios?

Tengo un problema al intentar hacer un array de un objeto que he creado.

Código Delphi [-]
unit miprueba;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TDias = class
     Nombre : String;
     Constructor Crear;
     Destructor Eliminar;
  end;

  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Ventanas : array [1..2] of TDias;

implementation

{$R *.dfm}

constructor TDias.Crear;
begin
     inherited create;
     Nombre := '';
end;

destructor TDias.Eliminar;
begin
     inherited Destroy;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
     Ventanas[1].Crear;
end;

end.


Me compila bárbaro pero al intentar crear el objeto de la primer posición del array me da un error.

Alguna idea de que puede ser?

Última edición por dec fecha: 18-02-2008 a las 19:15:10.
Responder Con Cita
  #2  
Antiguo 18-02-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
No estoy del todo seguro pero por lo que veo allí hay un error lógico... estas llamando al constructor y destructor heredado de la clase... pero la clase no es heredada. (debiese ser primero virtual al ser la padre)

Ej.

Código Delphi [-]
TDias = class(TAlgo)
 Nombre : String;
 Constructor Crear; override;
 Destructor Eliminar; override;

...

end;

tambien esta el dato que te comentaba... si no estas heredando como puedes llamar al método heredado¿?¿?¿?

Cita:
Empezado por gandalf_uy
Código Delphi [-]
inherited create;

...

inherited Destroy;
0j0: POO

Saludos
Responder Con Cita
  #3  
Antiguo 18-02-2008
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Por otra parte, es posible que por acá también te venga un error:

Código Delphi [-]
 // Ventanas[1].Crear; // <---  Esto no va
 Ventanas[1]:=TDias.Crear;

Saludos
Responder Con Cita
  #4  
Antiguo 18-02-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cita:
Empezado por Héctor Randolph Ver Mensaje
Por otra parte, es posible que por acá también te venga un error...
Tambien puede ser.

Saludos
Responder Con Cita
  #5  
Antiguo 20-02-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola!

Cita:
Empezado por gandalf_uy Ver Mensaje
...pero al intentar crear el objeto de la primer posición del array me da un error...
gandalf_uy, te faltó mencionar algo muy importante: el mensaje de error que aparece en pantalla.


Cita:
Empezado por cHackAll Ver Mensaje
...la clase no es heredada. (debiese ser primero virtual al ser la padre)...si no estas heredando como puedes llamar al método heredado¿?¿?¿?
Según parece, el problema no tiene que ver con la ausencia o presencia de virtualidad en ningún método Javier. Las llamadas puestas por gandalf_uy al constructor Create y al destructor Destroy son válidas, ya que al no haber indicado una clase padre para TDias, el compilador toma a TObject (la clase ancestral base de cualquier otra) como su clase padre. En ese caso está llamando a TObject.Create y TObject.Destroy.

Cita:
Empezado por Héctor Randolph Ver Mensaje
Por otra parte, es posible que por acá también te venga un error:

Código Delphi [-]
 // Ventanas[1].Crear; // <---  Esto no va
 Ventanas[1]:=TDias.Crear;

Saludos
Yo diría que es casi seguro Héctor (a falta de más información por parte de gandalf_uy). No se estaba llevando a cabo una correcta instanciación del objeto.

Cabe mencionar gandalf_uy, que el constructor y el destructor que has definido en TDias son innecesarios, ya que el primero no hace nada que no haga ya el constructor Create heredado de TObject, y el segundo sólo llama al destructor Destroy. Si la clase TDias tuviese algo que inicializar o destruir de manera especial, entonces si tendrían utilidad.

Por último, te pregunto dos cosas:
¿Cómo te fue después de estas orientaciones? ¿Cuál es el objetivo de ese arreglo? (esto para ver si existen mejores alternativas).

Saludos.

Al González.
Responder Con Cita
  #6  
Antiguo 20-02-2008
gandalf_uy gandalf_uy is offline
Miembro
 
Registrado: ene 2005
Posts: 39
Poder: 0
gandalf_uy Va por buen camino
La verdad es que lo resolví haciendo un TObjectList, pero pruebo las sugerencias y comento como me fue.

Salu2 y muchas gracias a todos por responder.
Responder Con Cita
  #7  
Antiguo 26-02-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Me parece que era la elección natural en este caso pero que bueno que ya lo descubriste de esto se trata.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
Respuesta



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
crear mis propios cursores federiconqn21 Varios 8 25-02-2010 16:02:18
Inicializar componentes propios jzginez OOP 1 13-08-2006 06:31:14
Array de OBJETOS en Delphi 7 animal OOP 5 08-07-2005 11:33:21
Creacion de componentes o controles propios Lionel OOP 1 16-12-2004 15:08:24
Codigos de barras en Prendas de ropa ¿Generar Propios? jealousy Varios 3 17-09-2003 05:13:19


La franja horaria es GMT +2. Ahora son las 16:09:54.


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