PDA

View Full Version : Additional information about call DLL-Parameters in the manual



NewsArchive
03-28-2010, 02:44 AM
Hi Friedrich,

could you add a sentence like the following to explanation of the
"Function Parameters" in the CALL DLL section:

If you want to use a Variable as an out parameter, you must NOT use any
blanks between the comma and the variable name.



It took me about two hours to find out, why one call worked as expected
and another didn't. It was just a problem of one lonley blank character....


Markus

NewsArchive
03-29-2010, 09:15 AM
Hi Markus,

> could you add a sentence like the following to explanation of the
> "Function Parameters" in the CALL DLL section:
>
> If you want to use a Variable as an out parameter, you must NOT use any
> blanks between the comma and the variable name.
>
> It took me about two hours to find out, why one call worked as expected
> and another didn't. It was just a problem of one lonley blank
> character....

Hmm, I think am not seeing this problem. We have developed a demo project
and it seems to work as expected, even with blanks between the comma and
the variable name.

http://www.lindersoft.com/projects/CallDLLTest.zip

The CALLTHISFUNCTION function in the DLL modifies the value of the passed
Para1 and Para3 variables, it does not change the value of the passed Para2
variable.

Before the call to the DLL the variable values are:

LPBUFFER1 value: Para1 (original value)
LPBUFFER2 value: Para2 (original value)
LPBUFFER3 value: Para3 (original value)

After the call, the values are:

LPBUFFER1 value: Para1 (changed in DLL)
LPBUFFER2 value: Para2 (original value)
LPBUFFER3 value: Para3 (changed in DLL)

Would it be possible for you to modify the project in such a way that it
fails?

Thanks,
Friedrich

NewsArchive
03-29-2010, 09:16 AM
Hi Friedrich,

could make a test DLL with *LONG as out param? It seems not to be a
problem with *STRING and *CSTRING.

Markus

NewsArchive
03-29-2010, 09:18 AM
An additional Inforamtion:

My DLL has the following parameters:

*STRING
*STRING
*LONG

If I use

%A%,%B%,%LENGTH%

it works, but if I use

%A%, %B%, %LENGTH%

it doesn't works.

Markus

NewsArchive
03-29-2010, 09:18 AM
Markus,

> *STRING
> *STRING
> *LONG
>
> If I use
>
> %A%,%B%,%LENGTH%
>
> it works, but if I use
>
> %A%, %B%, %LENGTH%
>
> it doesn't works.

Yes, you are right. It does not work if there is a "blank" between the
comma and the (*LONG) variable name. We'll fix this in the compiler.

Thanks,
Friedrich