Walter
Esto me funciona pero el concepto acá no está claro qué función le das al
Init, supongo que es un ejemplo esto de sumar
oWscalculadora = NewObject("wscalculadora","c:\temp\main.prg",'',10,10 )
? oWscalculadora.nResultado
Define Class WSCalculadora As Session OlePublic
nResultado = 0.0
Procedure Init( tnNumberA As Number , tnNumberB As Number ) As Number
This.nResultado = This.Suma(tnNumberA,tnNumberB)
Return .T.
Endproc
Procedure Suma ( Sumando1 As Number, Sumando2 As Number ) As Number
Return Sumando1 + Sumando2
Endproc
Procedure Resta ( Restando1 As Number, Restando2 As Number ) As Number
Return Restando1 - Restando2
Endproc
Procedure Multiplica ( Factor1 As Number, Factor2 As Number ) As Number
Return Factor1 * Factor2
Endproc
Procedure Divide ( Dividendo As Number, Divisor As Number ) As Number
If Divisor # 0
Return Dividendo / Divisor
Else
Return -1
Endif
Endproc
Enddefine
Ahora bien , si en el mismo init ya haces el cálculo cuando registras la
clase , ¿el resultado? . Por eso hice el cálculo , lo guarde en una
propiedad y después la consulto
? oWscalculadora.nResultado
Generalmente mis init arrancan de esta manera
Procedure Init( tnDatasessionId As Number ) As void
* Guardamos el seteo anterior
This.lnOldMemoWidth = Set("MEMOWIDTH")
Set Memowidth To 255
* Instanciamos la clase de gestión de errores
This.cError = Createobject( 'cError' )
EndProc
Saludos Eduardo
De: [email protected] [mailto:[email protected]] En nombre de Alejandro Paciotti
Iacchelli
Enviado el: Lunes, 17 de Octubre de 2011 07:18 p.m.
Para: GUFA List Member
Asunto: [GUFA] DLL & INIT
Estimados colisteros: estoy creando una DLL que recibe tres parámetros en el
método INIT. Cuando quiero crear el objeto a partir de la línea de comandos
me tira el error: OLE error code 0x80004005: Error no especificado.
Revisé las páginas con este error en Microsoft y en una de ellas advierten
que es un error que se arrastra de VFP 6. Cuando un evento INIT devuelve .F.
; tira el error.
El tema es que si le saco los parámetros del método INIT (para probar), anda
perfecto. Pero cuando le pongo los parámetros, tira el error.
Es más, haciendo pruebas con el famoso código de Rubén Rovira también me
tira error; entonces concluyo: ¿ no es posible poner ninguna sentencia en el
evento INIT de un DEFINE CLASS ?
DEFINE CLASS WSCalculadora AS Session OLEPUBLIC
PROCEDURE INIT(A AS Number, B AS Number)
C=A+B
RETURN .T.
ENDPROC
PROCEDURE Suma ( Sumando1 AS Number, Sumando2 AS Number ) AS Number
RETURN Sumando1 + Sumando2
ENDPROC
PROCEDURE Resta ( Restando1 AS Number, Restando2 AS Number ) AS Number
RETURN Restando1 - Restando2
ENDPROC
PROCEDURE Multiplica ( Factor1 AS Number, Factor2 AS Number ) AS Number
RETURN Factor1 * Factor2
ENDPROC
PROCEDURE Divide ( Dividendo AS Number, Divisor AS Number ) AS Number
IF Divisor # 0
RETURN Dividendo / Divisor
ELSE
RETURN -1
ENDIF
ENDPROC
ENDDEFINE
Temporalmente cree un evento INICIAR que haría lo mismo que el INIT y lo
convoco renglón siguiente que el CREATEOBJECT. Anda fenomenal, pero
si a
alguien le pasó y lo solucionó. Será bienvenida una respuesta.
Muchas gracias de antemano