[Lazarus-es] como usar una dll activex

Paola Bruccoleri pbruccoleri en adinet.com.uy
Sab Jun 14 22:54:45 CEST 2014


El 13/06/2014 21:20, Paola Bruccoleri escribió:
> El 13/06/2014 19:13, Paola Bruccoleri escribió:
>> El 13/06/2014 15:33, José Mejuto escribió:
>>> El 13/06/2014 19:59, Paola Bruccoleri escribió:
>>>
>>>
>>>> vCfe:=WIN_OLECREATEOBJECT("eFacturaCOM.cfe")
>>>> IF !HB_ISOBJECT(vCfe)
>>>>        ALERT('Falta instalar control OCX o problemas al crear 
>>>> objeto OLE
>>>
>>>> CABECERA'+CRLF+'Consulte a Sistemas o a'+CRLF+'PAOLA 
>>>> BRUCCOLERI','Error')
>>>>        RETURN
>>>> ENDIF
>>>>
>>>>   ************* DATOS CABECERA FACTURA *******************************
>>>> vCfe:AnoEmision      := "2014"
>>>> vCfe:MesEmision      := "03"
>>>> .......................etc
>>>>
>>>>
>>>
>>> Hola,
>>>
>>> Pues en teoría es más o menos lo mismo:
>>>
>>> var
>>> vCfe: _CFE;
>>> begin
>>>   vCfe:=_CFE.create;
>>>   vCfe.AnoEmision:='2014';
>>>   ...
>>>   ...
>>> end;
>>>
>>> Eso si, tienes que tener al menos esas dos DLL registradas en tu 
>>> sistema, el VBA6.dll y el MSXML2.DLL
>>>
>>> Calculo que el MSXML2_6_0_TLB.pas no lo necesitas en tu proyecto 
>>> para nada.
>>>
>> Hola José, resto del grupo..
>>
>> ya conseguí la vba6.dll. Lo que hice para obtener la VBA_6_0_TLB fue 
>> hacer lo mismo q con la otra: import type library. No la registré ni 
>> nada; solo dejé la dll en la misma carpeta del proyecto, al igual que 
>> la otra dll activex.
>> En fin, aparentemente ya tengo todos los .pas q necesito.
>> Todavía no me voy a meter en hacer ningún paquete como sugiere Martín 
>> xq primero quiero ver que todo funcione bien.
>>
>> Siguiendo con la sintaxis que me sugirió José, y que tb algo encontré 
>> en este foro:
>> http://forum.lazarus.freepascal.org/index.php?topic=21113.0
>>
>> logré armar casi lo mismo que tengo en harbour, PEROOOO siempre hay 
>> un PEROOOOO..a la hora de compilar me salta este error:
>>
>> efacturacom_1_0_tlb.pas(90,38) Fatal: Syntax error, "identifier" 
>> expected but ":" found
>>
>> y es acá:
>> *procedure Set_ivaTasaBasica(const :Currency); safecall;*
>>
>> pero ese código, si es que está mal, se generó solo! (es la librería 
>> de importación o como se llame)
>>
>> estoy usando para esto el lazarus 1.2.2 recién bajadito.... (en win8 64b)
>>
>> help!
>> millones de gracias!!
>> byeeeeeeeeeeeee
> sigoooooo
> para probar, rellené a mano cada variable q faltaba antes del tipo..
> *procedure Set_ivaTasaBasica(const ivatasabasica:Currency); safecall;*
>
> pero tu sintaxis me dió error acá en rojo:
> var
>   vCfe: _CFE;
>   itemFact1, itemFact2: _ItemFactura;
> begin
>   vCfe=_CFE.Create;
>
> unit1.pas(38,13) Error: identifier idents no member "Create"
>
> y lo modifiqué por:
> vCfe:= CoCFE.Create;
>
> aparenta quedar pronto...
> igual tengo 3 errores que no logro darme cuenta:
>
> unit1.pas(117,54) Error: Variable identifier expected
> efacturacom_1_0_tlb.pas(705,13) Hint: Found declaration: 
> _Sobre.SaveXMLToFile(var WideString):OleVariant; SafeCall;
> unit1.pas(118,56) Error: Variable identifier expected
> efacturacom_1_0_tlb.pas(187,13) Hint: Found declaration: 
> _CFE.SaveXMLToFile(var WideString):OleVariant; SafeCall;
> unit1.pas(121,51) Error: Variable identifier expected
> efacturacom_1_0_tlb.pas(811,13) Hint: Found declaration: 
> _Respuesta.savePDF(var WideString):WordBool; SafeCall;
> unit1.pas(130) Fatal: There were 3 errors compiling module, stopping
>
>
> donde:
>   vSobre.SaveXMLToFile('f:\lz\felectronica\sobre.xml'); ___ERROR 1_
>   vSobre.cfe.SaveXMLToFile('f:\lz\felectronica\cfe.xml'); ___ERROR 2_
>   if vSobre.callWebService then begin
>      resp:= vSobre.Response;
>      resp.savePDF('f:\lz\felectronica\compPdf.pdf');_  ERROR 3_
>   end else begin
>      ShowMessage('ERROR AL LLAMAR AL WEB SERVICE...')
>   end
>
> y en el pas que se generó con la DLL
>
>    function SaveXMLToFile(*var* 
> strPath:WideString):OleVariant;safecall; (está en la interface de _Sobre)
>    function SaveXMLToFile(var strPath:WideString):OleVariant;safecall; 
> (está en la interface de _CFE)
>    function savePDF(var strPath:WideString):WordBool;safecall; (está 
> en la interface de _Respuesta)
>
>
le saqué el *var* a cada función.. y despejé esos errores
ahora, como estaba haciedo:

var
   vCfe: _CFE;
begin
   vCfe=_CFE.Create;

da error al compilar:
unit1.pas(45,13) Error: identifier idents no member "Create"

si la cambio x esto:
vCfe:=CoCFE.Create;

se crea el exe, pero da un SIGSEGV acá:
   vCfe.AnoEmision      :='2014';

evidentemente estoy interpretando mal todo esto....



------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20140614/b8a3df57/attachment-0002.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: ejibbddh.png
Type: image/png
Size: 5683 bytes
Desc: no disponible
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20140614/b8a3df57/attachment-0002.png>


More information about the Lazarus-es mailing list