[fpc-pascal] importtl tool

LacaK lacak at zoznam.sk
Mon Oct 24 08:17:57 CEST 2016


>
>>> To note that both "constref" are intentional.
>> Ok I can create patch if we (you ;-)) are sure that it is okay ?
>> -Laco.
>
>
> I'm not "sure" because if the flag does not tell us nothing (no IN, no 
> OUT) I do not know if there is a "default behavior" except the "ByRef" 
> flag and both "constref" and "var" are "ByRef".

I have found:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa367051(v=vs.85).aspx
"The*[in]*attribute is applied to a parameter by default when no 
directional parameter attribute is specified."

>
> Take a look in you TLB looking for a widestring that should return 
> information, if with this code is marked as "var" everything should be 
> ok, if it will be marked as "constref" something in the logic is wrong.

? I do not understand what do you mean
When I use Microsofts OLEView to look at TLB I see only:
   long ScGetStringValue(long Type, BSTR* Value);
There is no attribute [in],[out],... specified

According to:
https://msdn.microsoft.com/en-us/library/cc237804.aspx
https://msdn.microsoft.com/en-us/library/windows/desktop/ms221019(v=vs.85).aspx
*"PARAMFLAG_NONE: *The behavior of the parameter is not specified."
I guess, that my case is PARAMFLAG_NONE so patch should look like:
   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_NONE,*
               PARAMFLAG_FIN:sPar:='var '; //constref in safecall? TBD
             end;
I leave 'var ' for Delphi compatibility ...

-Laco.



More information about the fpc-pascal mailing list