Fecha actual Mié Jun 26, 2024 1:03 pm

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 9 mensajes ] 
Autor Mensaje
NotaPublicado: Mar Ago 01, 2006 6:36 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
Pues eso, que me estoy planteando hacerme una serie de objetos standard para todas mis aplicaciones y no encuentro info sobre como generarlos añadirles metodos ,etc...hay alguna documentacion hecha en alguna parte?

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mié Ago 02, 2006 12:21 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
ironmansp escribió:
Pues eso, que me estoy planteando hacerme una serie de objetos standard para todas mis aplicaciones y no encuentro info sobre como generarlos añadirles metodos ,etc...hay alguna documentacion hecha en alguna parte?


Hola Josu.

La creación de objetos es sencilla:

class <nombre> [from] <clase>

private:
data <nombre>
...

public:
data <nombre>

method create constructor
method ... [virtual]

endclass

method create() class <nombre>
...
return

...

El metodo Create tiene la clausula Constructor para indicar que el return del metodo tiene que devolver una referencia al propio objeto.

Bueno, espero haberte aclarado algo....

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto: problemilla...
NotaPublicado: Mié Ago 02, 2006 7:04 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
estoy con este codigo, quiero crear la clase TArchivo, con metodo open create y close y lo demás , pero no me hereda de TComponent ni de TObject, me da error. unresolved external reference...:

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mié Ago 02, 2006 7:53 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
ironmansp escribió:
estoy con este codigo, quiero crear la clase TArchivo, con metodo open create y close y lo demás , pero no me hereda de TComponent ni de TObject, me da error. unresolved external reference...:


Hola, Josu, ¿que tal...?

Perdona la pregunta, ¿para que necesitas heredar de las clases que mencionas...?

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mié Ago 02, 2006 8:22 pm 

Registrado: Jue Jul 20, 2006 8:36 pm
Mensajes: 143
Ubicación: Bilbao
todos los objetos se crean a partir de otros objetos. He llegado a la conclusion de que se deben crear a partir de alguno, llamese tcomponent o tobject..., lueho he visto que no es necesario y he dejado el codigo asi, pero me sigue dando error:

#include "Gui.ch"

Function Main()
Local nDescriptor
nDescriptor := TArchivo:Create("HOLA.HOL")
? nDescriptor
Return NIL



Class TArchivo

private:

public:
data cNombre
data nDescriptor
data nAtributos


Method Create Constructor
Method Open
Method Close

/*property Descriptor read data nDescriptor
property Nombre read data cNombre
*/

Endclass


Method create( oOwner ) Class TArchivo
::nDescriptor := NIL
::cNombre := Space(120)
::nAtributos := 0
Return

Method open( oOwner ) Class TArchivo
Local nDescriptor
If File(::cNombre)
nDescriptor := Fopen(::cNombre)
::nDescriptor := nDescriptor
Endif
Return

Method close( oOwner ) Class TArchivo
FClose(::nDescriptor)
Return NIL

_________________
(C) Josu Udaondo...el fiera de clipper 5
Bilbao 2006


Arriba
 Perfil  
Responder citando  
NotaPublicado: Mié Ago 02, 2006 9:15 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
ironmansp escribió:
todos los objetos se crean a partir de otros objetos. He llegado a la conclusion de que se deben crear a partir de alguno, llamese tcomponent o tobject..., lueho he visto que no es necesario y he dejado el codigo asi, pero me sigue dando error:

#include "Gui.ch"

Function Main()
Local nDescriptor
nDescriptor := TArchivo:Create("HOLA.HOL")
? nDescriptor
Return NIL



Class TArchivo

private:

public:
data cNombre
data nDescriptor
data nAtributos


Method Create Constructor
Method Open
Method Close

/*property Descriptor read data nDescriptor
property Nombre read data cNombre
*/

Endclass


Method create( oOwner ) Class TArchivo
::nDescriptor := NIL
::cNombre := Space(120)
::nAtributos := 0
Return

Method open( oOwner ) Class TArchivo
Local nDescriptor
If File(::cNombre)
nDescriptor := Fopen(::cNombre)
::nDescriptor := nDescriptor
Endif
Return

Method close( oOwner ) Class TArchivo
FClose(::nDescriptor)
Return NIL



Hola, Josu

#include "Gui.ch"

Function Main()
Local oArchivo
oArchivo := TArchivo:Create("HOLA.HOL")
? oArchivo:IsOpen
Return NIL



Class TArchivo

private:
method GetIsOpen

public:
data cNombre
data nDescriptor
data nAtributos

Method Create Constructor
Method Open
Method Close

property IsOpen read method GetIsOpen

/*property Descriptor read data nDescriptor
property Nombre read data cNombre
*/

Endclass

method Create( FileName, Mode ) class TArchivo

if Mode == fmCreate
::FHandle := FCreate( FileName )
if ::FHandle < 0
MsgStop( "Error creando ", FileName )
return
endif
else
::FHandle := FOpen( FileName )
if ::FHandle < 0
MsgStop( "Error abriendo ", FileName )
return
endif
endif

::FFileName := FileName
::FMode := Mode

return

Method create( cNombre, nModo ) Class TArchivo
::nDescriptor := NIL
::cNombre := cNombre
::nAtributos := 0
Return

Method open() Class TArchivo
Local nDescriptor /// ¿para que?
If File(::cNombre)
::nDescriptor := Fopen(::cNombre)
//::nDescriptor := nDescriptor // sobra
Endif
Return

Method close() Class TArchivo
if ::IsOpen
FClose(::nDescriptor)
endif
Return NIL :D

// Este método es SOLO VISIBLE PARA LA CLASE
// No se puede llamar desde fuera, por ejemplo:
// oArchivo:GetIsOPen() DARÍA ERROR.
method GetIsOpen() Class TArchivo
return ( ::nDescriptor > 0 )

:D

1º nDescriptor := TArchivo:Create("HOLA.HOL")
La creación de un objeto, devuelve.... ¿?¿?¿? UN OBJETO!!!!!
oArchivo := TArchivo:Create("HOLA.HOL")

2º En la parte PRIVATE, declara las variables privadas de la clase:

private:
data FName // Solo visible para la pripia clase

public:
property Name read data FName

Declarandolo así la propiedad, estamos permitiendo leer Name, pero NO PERMITIMOS la ESCRITURA (fuera de la clase, claro).

3º Los oOwner como parametro ¿para que?

... ya contarás....

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mié Ago 02, 2006 9:28 pm 
Avatar de Usuario

Registrado: Vie Oct 07, 2005 8:26 pm
Mensajes: 115
Ubicación: Valencia - España
ironmansp,
mira si te va mejor con este codigo, está hecho "al vuelo", espero que te funcione.

#include "Gui.ch"

Function Main()
Local oArchivo

oArchivo := TArchivo:Create( "HOLA.HOL")

? oArchivo:nDescriptor

oArchivo:Close()

Return NIL



Class TArchivo

private:

public:
data cNombre
data nDescriptor
data nAtributos


Method Create Constructor
Method Open
Method Close

/*property Descriptor read data nDescriptor
property Nombre read data cNombre
*/

Endclass


Method create( cFichero ) Class TArchivo
::nDescriptor := 0
::cNombre := cFichero
::Open()
::nAtributos := 0
Return

Method open() Class TArchivo

If File(::cNombre)
::nDescriptor := Fopen(::cNombre)

Endif
Return

Method close() Class TArchivo
FClose(::nDescriptor)
Return NIL


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Mié Ago 02, 2006 10:39 pm 
Site Admin
Avatar de Usuario

Registrado: Jue Oct 06, 2005 10:49 pm
Mensajes: 655
Ubicación: España - Salamanca
Todos habéis caído en lo mismo, se os olvida el paréntesis :-)

TArchivo():Create( "HOLA.HOL")

_________________
Un saludo,
Bruno Cantero
www.c3compiler.com


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Jue Ago 03, 2006 11:03 am 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
Bruno escribió:
Todos habéis caído en lo mismo, se os olvida el paréntesis :-)

TArchivo():Create( "HOLA.HOL")


Hola a todos.

Bruno, LISTO que eres un LISTO!!!!!! :lol:

Esas son las cosas OBVIAS, que pasas por alto, sobre todo cuando estas revisando codigo de terceros, ya que tu mente dá por supuesto que 'ESO' está bien escrito. :wink:

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 9 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron