> dim s_err as stringbuilder
> dim xx(6) as double
[quoted text clipped - 9 lines]
>
> ret_flag = swe_calc(xx(6), serr)
Copy-and-pasting code is a much more reliable way of showing us your
code. Note that the Declare calls the function 'calc' but you call it
as 'swe_calc'. If we have to guess what you mean, it will take us
longer to help you.
> If I take out the 6 in the above line, I get error "number of indices is
> less than the number of dimensions in the indexed array."
>
> If I put it in, or put a zero in, like xx(0) or xx(6), I get the error
> "value of type double cannot be converted to '1 dimensional array of
> double'"
Try
ret_flag = calc(xx, serr)
The function wants an array: it is xx - not xx(0) or xx(6) or xx() -
that is an array.
Also, xx should be initialised to an empty array before calling the
DLL, otherwise there will be nowehere to put the results:
xx = New Double(6) {}
Also also, all I have fixed is the syntax: I don't know enough about
calling unmanaged code to be able to say that this will definitely do
what you want.

Signature
Larry Lard
Replies to group please
Patrick Sullivan - 08 May 2006 16:34 GMT
Thanks Larry. You figured out what I wanted to know, I think. Interop is
kind of confusing. It took me quite a while to get the s_err to pass
compiling.

Signature
Patrick Sullivan, AA-BA, BA-IT
> > dim s_err as stringbuilder
> > dim xx(6) as double
[quoted text clipped - 37 lines]
> calling unmanaged code to be able to say that this will definitely do
> what you want.
You are declaring an array of 7 doubles. To declare an array of 6
doubles, you have to do like this:
dim xx(5) as double
> dim s_err as stringbuilder
> dim xx(6) as double
[quoted text clipped - 18 lines]
>
> What is wrong here? TIA