Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Problema con constructor.. (https://www.clubdelphi.com/foros/showthread.php?t=79760)

linuxtin 08-08-2012 15:31:21

Problema con constructor..
 
Hola a todos! Me estoy volviendo loco no puedo crear el objeto de la clase TPersona desde otro form, acá les dejo el código de la clase.


Código Delphi [-]
unit Persona;



interface
uses SysUtils, Classes;

type

  TPersona=Class
   private

      idPersona:string;
      apellido:string;
      nombre:string;
      dni:string;
      fechaNacimiento:TDate;
      provincia:string;
      ciudad:string;
      codigoPostal:integer;
      direccion:string;
      codigoArea:integer;
      telefono:string;



   public

    constructor Create; overload;
    constructor Create(Apellido:string;Nombre:string);overload;





   published

   property SetGetApellido: string read apellido write apellido;
   property SetGetNombre: string read nombre write nombre;






END;


implementation


constructor TPersona.Create(Apellido: string; Nombre: string);
begin


      apellido:=Apellido;
      nombre:=Nombre;
end;


constructor TPersona.Create;
begin

end;

end.


y en el form lo llamo de esta manera




Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
    persona:TPersona;

begin

         persona:=TPersona.Create('Juan','Pedro');
         Edit3.Text:=persona.SetGetApellido;



end;

end
.



Si alguien me puede dar una mano, desde ya muchas gracias!!

Caro 08-08-2012 15:49:14

Hola linuxtin, no dices que error te sale, en uses debes añadir la unit Persona que supongo lo haces. Otra cosa que veo, apellido y nombre tienen el mismo nombre que tus parametros del constructor (delphi no hace diferencia entre mayusculas y minusculas) cambia los nombres.

Código Delphi [-]
constructor TPersona.Create(aApellido: string; aNombre: string);
begin
  apellido:=aApellido;
  nombre:=aNombre;
end;

Saluditos

ecfisa 08-08-2012 15:51:16

Hola linuxtin.

Proba de este modo:
Código Delphi [-]
unit uPersona;

interface

uses SysUtils, Classes;

type
  TPersona=Class
   private
    idPersona:string;
    FApellido:string;
    FNombre:string;
    //...
   public
    constructor Create(Apellido:string; Nombre:string);
    //... 
   published
    property Apellido: string read FApellido write FApellido;
    property Nombre: string read FNombre write FNombre;
    //...
  end;

implementation

constructor TPersona.Create(Apellido: string; Nombre: string);
begin
  FApellido:= Apellido;
  FNombre:= Nombre;
end;

//...

end.

Código Delphi [-]
...
implementation

uses uPersona;

procedure TForm1.Button1Click(Sender: TObject);
var
  Persona: TPersona;
begin
  Persona:= TPersona.Create('TRUENO','PEPE');
  ShowMessage(Persona.Nombre+' '+Persona.Apellido);
end;

Saludos.

linuxtin 08-08-2012 16:01:40

Cita:

Empezado por ecfisa (Mensaje 439090)
Hola linuxtin.

Proba de este modo:
Código Delphi [-]
unit uPersona;

interface

uses SysUtils, Classes;

type
  TPersona=Class
   private
    idPersona:string;
    FApellido:string;
    FNombre:string;
    //...
   public
    constructor Create(Apellido:string; Nombre:string);
    //... 
   published
    property Apellido: string read FApellido write FApellido;
    property Nombre: string read FNombre write FNombre;
    //...
  end;

implementation

constructor TPersona.Create(Apellido: string; Nombre: string);
begin
  FApellido:= Apellido;
  FNombre:= Nombre;
end;

//...

end.

Código Delphi [-]
...
implementation

uses uPersona;

procedure TForm1.Button1Click(Sender: TObject);
var
  Persona: TPersona;
begin
  Persona:= TPersona.Create('TRUENO','PEPE');
  ShowMessage(Persona.Nombre+' '+Persona.Apellido);
end;

Saludos.



Gracias chicos!! Efectivamente era eso, pensé que estaba mal declarado algo.

Como ven declarada la clase? Algo que esta mal?

Gracias !!

ecfisa 08-08-2012 17:20:01

Cita:

Empezado por linuxtin (Mensaje 439093)
Como ven declarada la clase? Algo que esta mal?

Hola.

No... Pero podrías agregar algunos detalles a efectos de optimizar el ingreso de los valores:
Código Delphi [-]
...
type
  TPersona=Class
   private
    idPersona:string;
    FApellido:string;
    FNombre:string;
    //...
    function GuardarApellido: Boolean;
    function GuardarNombre: Boolean;
    procedure SetApellido(const Value: string);
    procedure SetNombre(const Value: string);
    //
   public
    constructor Create(aApellido:string; aNombre:string);
    //...
   published
    property Apellido: string read FApellido write SetApellido stored GuardarApellido;
    property Nombre: string read FNombre write SetNombre stored GuardarNombre;
    //...
  end;

implementation

constructor TPersona.Create(aApellido: string; aNombre: string);
begin
  Apellido:= aApellido;
  Nombre:= aNombre;
end;

function TPersona.GuardarApellido: Boolean;
begin
  Result:= FApellido <> '';
end;

function TPersona.GuardarNombre: Boolean;
begin
  Result:= FApellido <> '';
end;

procedure TPersona.SetApellido(const Value: string);
begin
  if Value <> FApellido then
    FApellido:= Value;
end;

procedure TPersona.SetNombre(const Value: string);
begin
  if Value <> FNombre then
    FNombre:= Value;
end;
...

Saludos.


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

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