Club Delphi  
    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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-02-2019
ramonigimenez ramonigimenez is offline
Miembro
 
Registrado: ago 2015
Posts: 11
Poder: 0
ramonigimenez Va por buen camino
Problemas con constructor de clase

Hola amigos,

Soy nuevo con delphi y estoy intentando amigarme con el lenguaje.
Pero me encontre con un problema que no puedo resolver por mi falta de experiencia.
Defini una clase (Espero que este bien), pero cuando compilo me da un error que describo debajo

Código:
//DEFINIECION DE CLASE
TFuente=class(tObject)
   private
    fColorFondo: TColor;
    fFuente: TFont;
  public
     Constructor Create;
    destructor Destroy; override;
     Procedure SaveToStream(Const aDest:Tstream);
    Procedure LoadFromStream(Const aSource:TStream);
    procedure Assign(const aSource:TFuente);
    property Fuente:TFont read fFuente write fFuente;
    property ColorFondo:TColor read fColorFondo write fColorFondo;
    end;


 //ERROR QUE DEVUELVE
[DCC Error] untClasses.pas(5):[DCC Error] E2065 Unsatisfied forward or external declaration: 'TFuente.Create'
En la sección use utilizo
Código:
uses Classes, SysUtils, Graphics, Controls,Forms, Jpeg, gifimage,Windows,
System2
Supuse que el error me lo daba porque no llame a la clase System, pero si la agrego a use
me da este error
Código:
[DCC Error] untClasses.pas(5): E2004 Identifier redeclared: 'System'
Espero puedan ayudarme, muchas gracias
Responder Con Cita
  #2  
Antiguo 07-02-2019
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 16
TOPX Va camino a la fama
Cita:
Empezado por ramonigimenez Ver Mensaje
//ERROR QUE DEVUELVE
[DCC Error] untClasses.pas(5):[DCC Error] E2065 Unsatisfied forward or external declaration: 'TFuente.Create'
Hola,

El error dice que encontró la declaración del método Create, pero no encuentra la implementación.

¿Cómo está implementado ese constructor?
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #3  
Antiguo 07-02-2019
ramonigimenez ramonigimenez is offline
Miembro
 
Registrado: ago 2015
Posts: 11
Poder: 0
ramonigimenez Va por buen camino
Hola,
desbajo de la seccion "implementation"
cree estas funciones
Código Delphi [-]
{ Tfuente }

constructor Tfuente.Create;
begin
  fColorFondo:=clWhite;
  fFuente:=TFont.Create;
end;

procedure TFuente.Assign(const aSource: TFuente);
begin
  fFuente.Assign(asource.Fuente);
  fColorFondo:=aSource.ColorFondo;
end;

destructor Tfuente.Destroy;
begin
  fFuente.Free;
  inherited;
end;

procedure TFuente.LoadFromStream(const aSource: TStream);
begin
  fColorFondo:=ReadInt(aSource);
  fFuente.Name:=ReadStr(aSource);
  fFuente.Size:=ReadInt(aSource);
  fFuente.Color:=ReadInt(aSource);
  if ReadBool(aSource) then
    fFuente.Style:=fFuente.Style+[fsBold]
  else
    fFuente.Style:=fFuente.Style-[fsBold];
  if ReadBool(aSource) then
    fFuente.Style:=fFuente.Style+[fsItalic]
  else
    fFuente.Style:=fFuente.Style-[fsItalic];
  if ReadBool(aSource) then
    fFuente.Style:=fFuente.Style+[fsUnderline]
  else
    fFuente.Style:=fFuente.Style-[fsUnderline];
end;

procedure TFuente.SaveToStream(const aDest: Tstream);
begin
  WriteInt(aDest,fColorFondo);
  WriteStr(aDest,fFuente.Name);
  WriteInt(aDest,fFuente.Size);
  WriteInt(aDest,fFuente.Color);
  WriteBool(aDest,fsBold in fFuente.Style);
  WriteBool(aDest,fsItalic in fFuente.Style);
  WriteBool(aDest,fsUnderline in fFuente.Style);
end;
Lo que creo que esta haciendo es crear el constructor y las funciones que defini antes.

Última edición por Casimiro Notevi fecha: 07-02-2019 a las 18:35:07. Razón: Poner etiquetas delphi
Responder Con Cita
  #4  
Antiguo 07-02-2019
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
¿Puedes mostrarnos el código completo de tu unidad .pas? Por cierto, se recomienda usar la etiqueta para código Delphi (el pequeño edificio griego de tres columnas ).

Por otro lado, el error "Identifier redeclared: 'System'" se debe a que la unidad System se incluye de forma implícita en cualquier aplicación Delphi. Es como un Uses System invisible; no debe ser incluida expresamente.
Responder Con Cita
  #5  
Antiguo 07-02-2019
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 16
TOPX Va camino a la fama
Cita:
Empezado por ramonigimenez Ver Mensaje
Hola,
desbajo de la seccion "implementation"
cree estas funciones
[sic]
Lo que creo que esta haciendo es crear el constructor y las funciones que defini antes.
A ese código no le veo problema, ¿es seguro que compila con el error que dice?

Pregunto, porque ensayé creando la unidad con su código y compila sin inconveniente, así:
Código Delphi [-]
unit untClasses;

interface

uses
  Classes, Graphics;

type
  TFuente = class(TObject)
    private
      fColorFondo: TColor;
      fFuente: TFont;
    public
      constructor Create;
      destructor Destroy; override;

      Procedure SaveToStream(const aDest: TStream);
      Procedure LoadFromStream(const aSource: TStream);
      procedure Assign(const aSource: TFuente);

      property Fuente: TFont read fFuente write fFuente;
      property ColorFondo: TColor read fColorFondo write fColorFondo;
  end;

implementation

{ TFuente }

procedure TFuente.Assign(const aSource: TFuente);
begin

end;

constructor TFuente.Create;
begin

end;

destructor TFuente.Destroy;
begin

  inherited;
end;

procedure TFuente.LoadFromStream(const aSource: TStream);
begin

end;

procedure TFuente.SaveToStream(const aDest: Tstream);
begin

end;

end.

Tip: Después de que escriba la declaración de un método, teniendo el cursor en esa línea puede oprimir Ctrl+Shift+C para que el IDE cree el cascarón de cada método en la sección implementation por Ud.
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #6  
Antiguo 07-02-2019
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Coincido totalmente con TOPX.

El error
Cita:
[DCC Error] untClasses.pas(5):[DCC Error] E2065 Unsatisfied forward or external declaration: 'TFuente.Create'
indica que un método declarado en la clase (Create) no posee su correspondiente definición.

Sin embargo, el código presentado por ramonigimenez en el mensaje #3, define todos los métodos declarados dentro de la clase TFuente

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 08-02-2019
ramonigimenez ramonigimenez is offline
Miembro
 
Registrado: ago 2015
Posts: 11
Poder: 0
ramonigimenez Va por buen camino
Amigos,
Desde ya muchas gracias por el apoyo.
Por suerte solucione este problemita, seguire avanzando en el proyecto.


Cita:
Empezado por TOPX Ver Mensaje
Tip: Después de que escriba la declaración de un método, teniendo el cursor en esa línea puede oprimir Ctrl+Shift+C para que el IDE cree el cascarón de cada método en la sección implementation por Ud.
-
Muchas gracias por el tip lo tendre en cuenta.


Nuevamente a todos muchas gracias.
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
Problemas con ¿ADO?: Clase no registrada sitrico Conexión con bases de datos 3 19-02-2014 18:49:04
Problemas con el constructor de una clase Ledian_Fdez C++ Builder 1 05-04-2010 13:59:23
Problemas al crear mi primera clase Kandorf OOP 6 04-12-2009 02:00:23
Implementar el constructor de una clase Alcolea OOP 2 14-06-2006 07:39:05
Problemas con la clase TQRDBRichText en Delphi 7 osmel Impresión 0 07-12-2005 22:18:37


La franja horaria es GMT +2. Ahora son las 15:26:56.


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