by 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