>Can't quite get my head around this one.
>
>I'm having trouble using a DLL. The simple functions I can handle, but when it comes to arrays........
>
>Documentation (VB I guess) says:
>Declaration:
>long IORead {long numChannels,
> long *channelIDs,
> float (*input)[4],
> long *state }
>
>where:
>channelIDs is an array of integers (0,1,2,3)
>input is a pointer to a 4096 x 4 array
>and state is a pointer to a 4096 element array
>
>I’ve tried:
>
>DECLARE long IORead IN SomeDLL.dll ;
> long numChannels, ;
> string *channelIDs, ;
> string *input, ;
> string *state
Change the Definition to:
DECLARE long IORead IN SomeDLL.dll ;
long numChannels, ;
INTEGER @ channelIDs, ;
string @ input, ;
string @ state
>
>numChannels = 4
>channelIDs = CREATEBINARY( ‘0123’)
change this to:
channelIDs = 0x00010203
>input = space(4096 x 4)
>state = space(4096)
>
>errorNo = UORead (;
> numChannels, ;
> *channelIDs, ;
> *input , ;
> *state ;
> )
The * prefix is incorrect, to pass by ref, use:
errorNo = UORead (;
numChannels, ;
@channelIDs, ;
@input , ;
@state ;
)