<div dir="ltr"><div><div>Sven, thanks, <br><br>I did something like this. Luckily both Delphi and fpc have a function variable VarDispProc doing all the job. So my function calling a name without parameters look very simple<br>

<br>....<br><br>type<br>  TVarDispInvoke = procedure(Result: PVariant; const Instance: Variant;<br>    CallDesc: PCallDesc; Params: Pointer); cdecl;<br><br>function DCNA(Instance: Variant; const Name: string): Variant;<br>

var<br>  CallDesc: TCallDesc;<br>begin<br>  CallDesc.CallType:=DISPATCH_METHOD;<br>  CallDesc.ArgCount:=0;<br>  CallDesc.NamedArgCount:=0;<br>  StrPCopy(@CallDesc.ArgTypes[0], Name);<br>  TVarDispInvoke(VarDispProc)(@Result, Instance, @CallDesc, Nil);<br>

end;<br><br>.....<br><br></div>So for an OleVariant instance V the calls<br></div><div>  V.SomeMethod <br>and<br></div><div>  DCNA(V, 'Somemethod') <br><br></div><div>are equivalent. Only that the latter can accept Cyrillic methods now<br>

</div><br><div>Max<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Jun 22, 2013 at 12:40 AM, Sven Barth <span dir="ltr"><<a href="mailto:pascaldragon@googlemail.com" target="_blank">pascaldragon@googlemail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 21.06.2013 09:01, Max Vlasov wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
is it possible for fpc to allow using non-english characters for symbols<br>
when COM-automation is used?<br>
An accountant-related application very popular here in Russia mostly<br>
uses Cyrillic symbols for naming methods and properties of their OLE<br>
Object. They probably have English counterparts, but they're very hard<br>
to find since not so many uses this software outside of Russia.<br>
<br>
Delphi starting some version seems to support non-latin identifiers, at<br>
least I saw examples at the web. But I currently doesn't have access to<br>
latest versions.<br>
<br>
Or is there any other way to access some ole identifier other than<br>
direct referencing so instead of<br>
...<br>
   OleVariant.<u></u>SomeMethodMaybeNonLatin...<br>
...<br>
   OleVariant.IntermediateAccess(<u></u>'SomeMethodMaybeNonLatin') ....<br>
</blockquote>
<br></div></div>
It *should* work by casting your OleVariant to a IDispatch (e.g. IDispatch(MyOleVariant) ) and then calling GetIDsOfNames and Invoke. For more information please take a look at the MSDN documentation of IDispatch here: <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms221608%28v=vs.85%29.aspx" target="_blank">http://msdn.microsoft.com/en-<u></u>us/library/windows/desktop/<u></u>ms221608%28v=vs.85%29.aspx</a><br>


You might also try to find examples for Delphi where GetIDsOfNames and Invoke are used directly as I've never done this before...<br>
<br>
Regards,<br>
Sven<br>
______________________________<u></u>_________________<br>
fpc-pascal maillist  -  <a href="mailto:fpc-pascal@lists.freepascal.org" target="_blank">fpc-pascal@lists.freepascal.<u></u>org</a><br>
<a href="http://lists.freepascal.org/mailman/listinfo/fpc-pascal" target="_blank">http://lists.freepascal.org/<u></u>mailman/listinfo/fpc-pascal</a><br>
</blockquote></div><br></div>