Para ser mas explicito, la funcion que deseo darle a la funcion init es pasarle usuario, password y base de datos para armar un string de conexion. La unica diferencia que noto con tu ejemplo es que yo compilo y genero una dll y ahí recien creo el objeto y es cuando genera el error. Gracias de todas formas.
Enviado desde mi BlackBerry® de Claro Argentina -----Original Message----- From: "Eduardo E. Tkachuk" <[email protected]> Sender: [email protected] Date: Mon, 17 Oct 2011 21:23:27 To: GUFA List Member<[email protected]> Reply-To: [email protected] Subject: [GUFA] DLL & INIT 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
