Power Builder - Para Carlos. Codigo utilizad para llamar dll de VB

 
Vista:

Para Carlos. Codigo utilizad para llamar dll de VB

Publicado por ricardon (11 intervenciones) el 27/08/2004 16:59:32
Hola Carlos,

Esta es una de las formas como lo he intentado:

OLEObject PBObject, PBNVObject

long ll_status, llres
double ld_result

PBObject = CREATE OLEObject
ll_status = PBObject.ConnectToNewObject ("PowerBuilder.Application")
IF ll_status <> 0 THEN
MessageBox("Error", String(ll_status))
ELSE
PBObject.LibraryList = "C:\Prueba VB\Prueba3\suma_prueba.dll"
PBObject.MachineCode = TRUE

PBNVObject = CREATE OLEObject
PBNVObject = PBObject.CreateObject("class1")
IF IsNull(PBNVObject) THEN
MessageBox("Error", "Objeto Nulo")
ELSE
ll_status = PBNVObject.suma (5, 3)
END IF

DESTROY PBNVObject
PBObject.DisconnectObject( )
END IF

DESTROY PBObject

Tambien lo he hecho declarando la Global External Function de esta manera:

Function Long suma(Long var1, Long var2) Library "suma_prueba.dll"

y mandandola llamar asi:

Long lires, livar1, livar2

livar1 = 5
livar1 = 3

lires = suma(livar1, livar2)

Necesito leer dlls de VB y genere una de prueba que solo hace una suma pero no he podido leerla, espero y me puedas ayudar, no se si la version de PB tenga que ver

Gracias anticipadas

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Para Carlos. Codigo utilizad para llamar dll de

Publicado por ccasti (12 intervenciones) el 31/08/2004 00:31:23
Ricardo:

Creo que el error lo tienes cuando declaras:
ll_status = PBObject.ConnectToNewObject ("PowerBuilder.Application")
ya que alli debes colocar el classname de tu dll, en mi caso es:
ll_status = PBObject.ConnectToNewObject ("SPImgAdmin.spimgmain")
el classneme que declaras arriba es la que contiene:
PBNVObject = PBObject.CreateObject("class1")
y para mi dll es
PBNVObject = PBObject.CreateObject("spimgmain")

corrigiendo ese error y colocando bien el nombre del classname de la dll
considero que no debes tener problemas para ejecutar la suma

Saludos

Carlos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Carlos. Otro error

Publicado por ricardon (11 intervenciones) el 31/08/2004 17:33:33
Hola Carlos,

Mira el codigo que estoy usando es este:

OLEObject PBObject, PBNVObject
Integer liSum1 = 5, liSum2 = 8
long ll_status, llres
double ld_result

PBObject = CREATE OLEObject
ll_status = PBObject.ConnectToNewObject ("suma_prueba.cls_suma")
IF ll_status <> 0 THEN
MessageBox("Error", String(ll_status))
Return
ELSE

PBObject.LibraryList = "C:\WINDOWS\system32\suma_prueba.dll"
PBObject.MachineCode = TRUE

PBNVObject = CREATE OLEObject

PBNVObject = PBObject.CreateObject("cls_suma")
IF IsNull(PBNVObject) THEN
MessageBox("Error", "Objeto Nulo")
Return
ELSE
ll_status = PBNVObject.suma (liSum1, liSum2)
END IF

DESTROY PBNVObject
PBObject.DisconnectObject( )
END IF

DESTROY PBObject

esta es la linea que cambie con lo que me dijiste:
ll_status = PBObject.ConnectToNewObject ("suma_prueba.cls_suma")

donde "suma_prueba" es el nombre de mi dll de VB y "cls_suma" es el nombre de mi clase

Ya corregi lo que me dijiste pero ahora me esta mandando un error al momento de darle el path con la dll, el error dice "name not found accesing external object property librarylist at line 23", esta es la linea:

PBObject.LibraryList = "C:\WINDOWS\system32\suma_prueba.dll"

ya lo intente con otra dll que todavia esta en el directorio donde la cree originalmente, pero me manda el mismo error

Ojala y me puedas ayudar con esto

Gracias por todo

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Para Carlos. Otro error

Publicado por ccasti (12 intervenciones) el 01/09/2004 01:10:14
El error creo que esta que en la definicion estas colocando el nombre de la dll y lo que va alli es el nombre del proyecto con que se genero. Para que estes mas seguro revisa como se registro la dll, alli te aparece el nombre y la clase. Con eso creo que si va a funcionar bien. Es sensible a mayusculas y minusculas. Revisa bien como esta registrada en windows la dll.

Saludos

Carlos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar