Objeto OLE

Objeto OLE

Postby Jorge Jaurena » Tue May 23, 2017 7:16 pm

Buenas tardes.
Me pasaron un dll y un tlb que me informan son librerias de clases de .NET las cuales contienen funciones que necesito utilizar, estoy probando con la funcion CreateOLEObject(), los que desarrollaron esta dll dan ejemplos de uso en VB, en Delphi y VFox, en delphi lo usan como un objeto OLE y por ahi arranque, los autores de la dll no tienen ni idea de como usar esto en FWH y yo tampoco. Quizas alguien me sepa orientar.
Estoy usando FWH 08 y BCC

Muchas gracias.
Jorge Jaurena
Jorge Jaurena
 
Posts: 155
Joined: Fri Oct 21, 2005 6:35 pm

Re: Objeto OLE

Postby Antonio Linares » Tue May 23, 2017 9:42 pm

Jorge,

> en delphi lo usan como un objeto OLE y por ahi arranque

puedes mostrar el código que has implementado/probado ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Objeto OLE

Postby Jorge Jaurena » Wed May 24, 2017 1:16 pm

Buen dia Antonio,

Aclaro que me indicaron los autores de la libreria que cumpla dos pasos para registrarla en windows los que hice sin problemas.
Utilize el GacUtil.exe y luego el RegAsm.exe

Me base en el ejemplo de FWH (ole.prg) y escribi esto:

Controlador:=CreateOLEObject('DataLinkLibrary.IController')
hSections := OLEGetProperty(Controlador,"Sections")
OLESetProperty(Controlador,"Nuevo","DEMO")

La primer linea es como lo declaran en delphi, esa pasa bien, en la segunda y tercera da un error que es el siguiente.
Crea el hb_out.log y el contenido es

****************************************************************
Application Exception - E:\CEM-44\CEM44DLL.EXE
Terminated at: 2017.05.24 10:02:26

Exception Code:C0000005
Exception Address:0041645E
EAX:0019F9C4 EBX:00000000 ECX:004979F0 EDX:0019F9C8
ESI:00000000 EDI:02562664 EBP:0019F9CC
CS:EIP:0023:0041645E SS:ESP:002B:0019F994
DS:002B ES:002B FS:0053 GS:002B
Flags:00010246
CS:EIP: 8B 0B FF 51 14 A3 44 41 4F 00 FF 75 FC E8 40 A0
SS:ESP: 00000000 00506690 0019F9C8 00000001 00000400 0019F9C4 004974C8 0043DC88 000000B4 00000000 00507BF0 02561F64 0019F9F8 0257C48C 0019F9F8 00448F68

C stack:
EIP: EBP: Frame: OldEBP, RetAddr, Params...
0041645E 0019F9CC 0019F9F8 00448F68 000000B4 00000000 00507BF0 0000001E 00000000 00000000 00000000 02570000
00448F68 0019F9F8 0019FAFC 0044304A 00000002 025625E4 00000000 00497468 0251061C 0000000F 0000000F 00000000
0044304A 0019FAFC 0019FB0C 0040119D 00497945 00497328
0040119D 0019FB0C 0019FB38 00448F68 00000003 00000000 00507BF0 0000001B 00000000 00000000 00000000 00000036
00448F68 0019FB38 0019FC3C 0044304A 00000000 00507BF0 FFFFFFFF 02562584 0019FBB0 7DD02C24 0019FB64 6D101011
0044304A 0019FC3C 0019FC4C 0043CEE2 00497918 00497328
0043CEE2 0019FC4C 0019FC8C 004491E4 02562584 02562584 004E990C 004FF84C 0044906F 000003C9 00000000 00507BF0
004491E4 0019FC8C 0019FD90 00443106 00000001 02562284 004973E8 004E97CC 00000003 002C0000 77E5E766 77E4CDA7
00443106 0019FD90 0019FDA0 004065A0 004EE025 004E96FC
004065A0 0019FDA0 0019FDCC 0044906F 000001B0 00000000 00507BF0 00000001 00000000 00000000 00D70004 00500000
0044906F 0019FDCC 0019FED0 00443106 00000013 02562244 00000000 00497328 00000023 02530870 7578FD05 00000000
00443106 0019FED0 0019FEE0 00401185 0049778C 00497328
00401185 0019FEE0 0019FF0C 00448F68 007F3309 00000000 00000001 00000000 00000000 00000000 00000000 00000028
00448F68 0019FF0C 0019FF28 004422C2 00000000 007F3309 00000000 007F3309 00000000
004422C2 0019FF28 0019FF48 00454E58 00000001 00000000 004972B8 007F3309 00000000 0080AD50
00454E58 0019FF48 0019FF78 0048C4D3 00400000 00000000 007F3309 00000001 00401000 00401000 00348000 00348000
0048C4D3 0019FF78 0019FF94 00000000 004972B8 757862C4 00348000 757862A0 654067A2
00000000 0019FF94 0019FFDC 77E50FD9 00348000 673DE822 00000000 00000000 00348000 00000000 00000000 00000000

Called from OLEGETPROPERTY(0)
Called from HACERALINICIO(54) in INICIO.prg
Called from (b)MAIN(40) in INICIO.prg
Called from TWINDOW:ACTIVATE(0)
Called from MAIN(40) in INICIO.prg
****************************************************************

Lo siguiente es la explicacion que da el creador de la libreria, en lo cual me base.

6.2.2.2. Delphi.
Para este entorno de trabajo existen varias formas de utilizar una librería de clases. En el siguiente caso vamos a crear un acceso a la misma en forma dinámica, desde el código. Recuerde que como estamos accediendo dinámicamente, puede que las funciones del objeto Controlador no aparezcan listadas, pero con la ayuda de este manual podrán disponer de la información necesaria para una correcta utilización de las funciones.
Codigo Delphi 7:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleServer, OleAuto;
var
Controlador: Variant;
begin
Controlador := CreateOLEObject('DataLinkLibrary.IController'); // NameSpace.ClassName
Controlador.Nuevo(); // o Controlador.Nuevo('DEMO');
end;

Gracias.
Jorge Jaurena
Jorge Jaurena
 
Posts: 155
Joined: Fri Oct 21, 2005 6:35 pm

Re: Objeto OLE

Postby Jorge Jaurena » Wed May 24, 2017 7:00 pm

Antonio, desestima el msg anterior, me informaron que debia registrar la dll con la version 2 del RegAsm.exe, yo lo habia hecho con la version 4. Ya no da error.
Perdon por la molestia, gracias.

Jorge Jaurena
Jorge Jaurena
 
Posts: 155
Joined: Fri Oct 21, 2005 6:35 pm

Re: Objeto OLE

Postby Antonio Linares » Wed May 24, 2017 8:20 pm

muy bien
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Objeto OLE

Postby Jorge Jaurena » Wed May 24, 2017 8:44 pm

Perdon, molesto de nuevo, no encuentro el ole.c como para guiarme en las funciones disponibles.
Donde podre conseguirlo?
Gracias

Jorge Jaurena
Jorge Jaurena
 
Posts: 155
Joined: Fri Oct 21, 2005 6:35 pm

Re: Objeto OLE

Postby Antonio Linares » Wed May 24, 2017 9:01 pm

Usas Harbour ó xharbour ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Objeto OLE

Postby Jorge Jaurena » Thu May 25, 2017 1:51 pm

Harbour
Jorge Jaurena
 
Posts: 155
Joined: Fri Oct 21, 2005 6:35 pm

Re: Objeto OLE

Postby Antonio Linares » Fri May 26, 2017 5:02 am

Jorge,

Prueba así:

Controlador:=CreateOLEObject('DataLinkLibrary.IController')
hSections := Controlador:Sections
Controlador:Nuevo = "DEMO"
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Objeto OLE

Postby Antonio Linares » Fri May 26, 2017 5:06 am

Revisa samples\testole.prg para ver las funciones disponibles

Si el código que te he indicado te funciona, entonces no necesitas usar esas funciones
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Objeto OLE

Postby Jorge Jaurena » Fri May 26, 2017 6:40 pm

Hola Antonio.

Probando distintas funciones con tu sugerencia anterior me da siempre el mismo error.
Error description: Error BASE/1004 No exported method: CONECTARCONTROLADOR

Supongo que tendre que usar las funciones previstas para OLE.
Si utilizo esa forma funciona lo siguiente:

Controlador:=CreateOLEObject('DataLinkLibrary.IController')
hSections := OLEGetProperty(Controlador,"ConectarControlador")
OLESetProperty(Controlador,"Nuevo","DEMO")

Pero la siguiente linea ya da error
OLEInvoke(hSections, "ConectarControlador", "192.168.2.105")
El error es Application Exception.

El problema que tengo es que no se usar estas funciones y tampoco tengo el OLE.C como para orientarme, no se si hay otras funciones y no estoy seguro de usarlas correctamente.
Agradeceria la informacion que me puedas acercar.

Muchas gracias.

Jorge Jaurena
Jorge Jaurena
 
Posts: 155
Joined: Fri Oct 21, 2005 6:35 pm

Re: Objeto OLE

Postby Antonio Linares » Fri May 26, 2017 6:46 pm

Jorge,

Comprueba este valor y dime que te aparece:

Controlador:=CreateOLEObject('DataLinkLibrary.IController')
hSections := OLEGetProperty(Controlador,"ConectarControlador")
MsgInfo( hSections )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Objeto OLE

Postby Jorge Jaurena » Fri May 26, 2017 6:58 pm

Nil
Jorge Jaurena
 
Posts: 155
Joined: Fri Oct 21, 2005 6:35 pm

Re: Objeto OLE

Postby Antonio Linares » Fri May 26, 2017 7:03 pm

Pues entonces no está funcionando :-(

Te han proporcionado algún ejemplo que funcione ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Objeto OLE

Postby Jorge Jaurena » Fri May 26, 2017 7:07 pm

Es lo que sospechaba, me dieron un pdf, en el hay ejemplo de VB, Delphi y VFox pero no dice mucho, les pedi un ejemplo y me mandan a ver el pdf, si no te molesta te lo adjunto en un mail.
Jorge Jaurena
 
Posts: 155
Joined: Fri Oct 21, 2005 6:35 pm

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 30 guests