[fpc-pascal] importtl tool

LacaK lacak at zoznam.sk
Fri Oct 21 12:05:30 CEST 2016


Dňa 20.10.2016 o 17:48 José Mejuto napísal(a):
> El 20/10/2016 a las 15:20, LacaK escribió:
>
>> There is:
>>           if bParamByRef then
>>             case FD^.lprgelemdescParam[k].paramdesc.wParamFlags and
>> (PARAMFLAG_FIN or PARAMFLAG_FOUT) of
>>             PARAMFLAG_FIN or PARAMFLAG_FOUT:sPar:='var ';
>>             PARAMFLAG_FOUT:sPar:='out ';
>>             PARAMFLAG_FIN:sPar:='var '; //constref in safecall? TBD
>>             end;
>> In my case bParamByRef = True, but wParamFlags=0 so no "var" nor "out"
>> is added ...
>> (as I do no known about type libraries I fear, that any modification
>> which fixes my case can cause problems in another cases)
>> So I have posted bug report:
>> http://bugs.freepascal.org/view.php?id=30764 may be somebody experienced
>> can fix it ...
>
> Hello,
>
> If wParaFlags is 0 then no "var" or "out" must be added (unless bug in 
> filling wParamFlags with value)

I do not know, but I know, that:

- when I import this type library in Delphi gives in this function "var" 
(not only in case of WideString but also in case of integer for example) 
... so I guess that there must be way how to handle it

- when I manually add in FPC "var" it works as expected (without "var" 
it gives runtime error about incompatible types)

- in documentation of OCX is function parameter described as "BSTR* 
Value" for "var WideString" resp. "long* Value" for "var integer"

- in typelib.pas is on line 631 vt=VT_PTR and sl='PWideString' ('P' is 
deleted on line 635) wParamFlags=0
When I add "else" part:
             case FD^.lprgelemdescParam[k].paramdesc.wParamFlags and 
(PARAMFLAG_FIN or PARAMFLAG_FOUT) of
               PARAMFLAG_FIN or PARAMFLAG_FOUT:sPar:='var ';
               PARAMFLAG_FOUT:sPar:='out ';
               PARAMFLAG_FIN:sPar:='var '; //constref in safecall? TBD
/*added*/  else sPar:='var ';
             end;
it works for me.
But I have no idea if it can negative impact other cases ?

Thanks
-Laco.



More information about the fpc-pascal mailing list