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 

Responder a