In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Objeto instanciando Objeto

Foro público de Xailer en español
Responder
Avatar de Usuario
Marcelo Coelho Silva
Mensajes: 269
Registrado: Sab May 31, 2008 4:49 pm
Ubicación: Brasil
Contactar:

Objeto instanciando Objeto

Mensaje por Marcelo Coelho Silva »

Prezados Senhores,
Tenho uma Classe TECF que gostaria de ser a classe "Mestre" de um grupo
de Classes Filhas ECF_xxxx (ECF_MP20FI2, ECF_MP2100TH, etc) já
personalizadas da Classe PAI ECF_PADRAO.
Estou tentando utilizar a Classe TECF para instanciar as Classes ECF_xxxx.
Porem da erro na execução dizendo "Invalid self" na linha do "Return
oObjeto" do Method new() da Classe TECF.
O que estou fazendo de errado ???
Obrigado,
Atenciosamente,
Marcelo Coelho Silva
Brasil.
PS: ABAIXO SEGUE AS ROTINAS (PRG) UTILIZADAS.
ROTINA DE CHAMADA:
/*
* Projeto: MH_ECF
* Arquivo: Teste_ecf.prg
* Descrição:
* Autor:
* Data: 10-29-2011
*/
#include "Xailer.ch"
CLASS TForm1 FROM TForm
COMPONENT oLabel1
COMPONENT oButton1
METHOD CreateForm()
METHOD FormInitialize( oSender )
ENDCLASS
#include "Teste_ecf.xfm"
METHOD FormInitialize( oSender ) CLASS TForm1
Local oECF
oECF := TECF():New("MP20FI2")
::oLabel1:cText := oECF:Coo
RETURN Nil
//---------------------------------------------------------- --------------------
CLASSE TECF :
/*
* Projeto: MH_ECF
* Arquivo: TECF.prg
* Descrição: Classe Principal do Projeto MH_ECF
* Autor: Marcelo Coelho Silva
* Data: 11-03-2011
*/
#include "Xailer.ch"
CLASS TECF
Method new(cModelo,cCOM,nVelocidade) CONSTRUCTOR
ENDCLASS
Method new( cModelo, cCom, nVelocidade ) Class TECF
Local cComPort
Static oObjeto
If cCom # Nil
cComPort := ".COM"+cCom
else
cComPort := ".COM1"
EndIf
Do Case
Case cModelo = "MP20FI2"
oObjeto := ECF_MP20FI2():new(cComPort,nVelocidade)
Case cModelo = "MP2100TH"
oObjeto := ECF_MP2100TH():new(cComPort,nVelocidade)
OtherWise
oObjeto := Nil
EndCase
Return oObjeto
//---------------------------------------------------------- --------------------------------------
Att.

Marcelo Coelho Silva
Brasil.
jlalin
Mensajes: 926
Registrado: Sab Dic 25, 2010 11:10 pm

Objeto instanciando Objeto

Mensaje por jlalin »

Marcelo,
si declaras New() o Create() como contructores debes devolver Self (que es
el objeto en sí­ mismo). Quita la cláusula CONSTRUCTOR de New() o utiliza un
metodo con otro nombre para devolver oObjeto.
Saludos,
José Lalí­n
Avatar de Usuario
Marcelo Coelho Silva
Mensajes: 269
Registrado: Sab May 31, 2008 4:49 pm
Ubicación: Brasil
Contactar:

Objeto instanciando Objeto

Mensaje por Marcelo Coelho Silva »

Obrigado.
Em 03/11/2011 16:28, José Lalí­n escreveu:
> Marcelo,
>
> si declaras New() o Create() como contructores debes devolver Self (que
> es el objeto en sí­ mismo). Quita la cláusula CONSTRUCTOR de New() o
> utiliza un metodo con otro nombre para devolver oObjeto.
>
> Saludos,
> José Lalí­n
>
Att.

Marcelo Coelho Silva
Brasil.
Responder