Hello,

AmiBroker ADK requires you to pass the number of arguments regardless.
The magic value for printf call is 21.

AmiVar vars[ 21 ];

SiteInterface.CallFunction( "printf", 21, vars );

You need to fill all unused vars with EMPTY_VAL .

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "Paul Ho" <[email protected]>
To: <[email protected]>
Sent: Saturday, August 15, 2009 4:55 PM
Subject: [amibroker] Re: ADK printf


> When functions of variable arguments are implemented. the three dots as in 
> printf(const char*str, ...) tells the compiler not to 
> do any parsing of arguments but simply pass all arguments as a block of 
> memory on the stack pointed to by str. However this is 
> intercepted by Amibroker's wrapper codes that is reinforcing the ArgsTable 
> and NumArg protocol. I reckon if you copy all your 
> arguments as a single block of memory pointed to by a char pointer and make 
> Args.string = charptr and use the CallFunction with 
> this 1 argument, The printf on the other side may be waiting for it.
> Let us know if this work
> Havent tried it myself though.
> /Paul.
> --- In [email protected], "Julian" <juliangoods...@...> wrote:
>>
>> How do you call this function from the ADK?
>>
>> SiteInterface.CallFunction("printf", ?, ?);
>> I get invalid number of arguments.
>>
>> Is there another way to write to the Interpretation window?
>>
>> Jules.
>>
>
>
>
>
> ------------------------------------
>
> **** IMPORTANT PLEASE READ ****
> This group is for the discussion between users only.
> This is *NOT* technical support channel.
>
> TO GET TECHNICAL SUPPORT send an e-mail directly to
> SUPPORT {at} amibroker.com
>
> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> http://www.amibroker.com/feedback/
> (submissions sent via other channels won't be considered)
>
> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> http://www.amibroker.com/devlog/
>
> Yahoo! Groups Links
>
>
>

Reply via email to