|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
umanaged code - array errordim xx(6) as double dim ret_flag as integer ' This is a function to call an unmanaged C-style library function. ' The lib function fills an array of 6 doubles or error string. Declare Auto Function calc Lib "calc32.dll" Alias "calc32.dll"( ByRef xx() As Double, ByVal serr As System.Text.StringBuilder) As Integer ' Using the unmanaged function: ret_flag = swe_calc(tjd_et, planet, iflag, xx(6), serr) 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'" What is wrong here? TIA -- Patrick Sullivan, AA-BA, BA-IT dim s_err as stringbuilder
dim xx(6) as double dim ret_flag as integer ' This is a function to call an unmanaged C-style library function. ' The lib function fills an array of 6 doubles or error string. Declare Auto Function calc Lib "calc32.dll" Alias "calc32.dll"( ByRef xx() As Double, ByVal serr As System.Text.StringBuilder) As Integer ' Using the unmanaged function: ret_flag = swe_calc(xx(6), serr) 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'" What is wrong here? TIA Patrick Sullivan wrote:
> dim s_err as stringbuilder Copy-and-pasting code is a much more reliable way of showing us your> dim xx(6) as double > dim ret_flag as integer > > ' This is a function to call an unmanaged C-style library function. > ' The lib function fills an array of 6 doubles or error string. > > Declare Auto Function calc Lib "calc32.dll" Alias "calc32.dll"( ByRef xx() > As Double, ByVal serr As System.Text.StringBuilder) As Integer > > ' Using the unmanaged function: > > ret_flag = swe_calc(xx(6), serr) 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. > Try> 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'" 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. -- Larry Lard Replies to group please 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. -- Show quoteHide quotePatrick Sullivan, AA-BA, BA-IT "Larry Lard" <larryl***@hotmail.com> wrote in message news:1147101511.983180.21800@g10g2000cwb.googlegroups.com... > > Patrick Sullivan wrote: > > dim s_err as stringbuilder > > dim xx(6) as double > > dim ret_flag as integer > > > > ' This is a function to call an unmanaged C-style library function. > > ' The lib function fills an array of 6 doubles or error string. > > > > Declare Auto Function calc Lib "calc32.dll" Alias "calc32.dll"( ByRef xx() > > As Double, ByVal serr As System.Text.StringBuilder) As Integer > > > > ' Using the unmanaged function: > > > > 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. > > -- > Larry Lard > Replies to group please > 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 Patrick Sullivan wrote: Show quoteHide quote > dim s_err as stringbuilder > dim xx(6) as double > dim ret_flag as integer > > ' This is a function to call an unmanaged C-style library function. > ' The lib function fills an array of 6 doubles or error string. > > Declare Auto Function calc Lib "calc32.dll" Alias "calc32.dll"( ByRef xx() > As Double, ByVal serr As System.Text.StringBuilder) As Integer > > ' Using the unmanaged function: > > ret_flag = swe_calc(xx(6), serr) > > 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'" > > What is wrong here? TIA >
Fat client - Server: Which technology?
Alternative to OpenFileDialog? ToolStrip with ToolStripDropDownButton Serial Port - How To Use "Invoke" On The Second Thread Outlook Add In is not shown for 1 user... Regular expression rejecting invalid files licensing a third party control Option Strict On does not cause compilation error Ignoring mouse event from contained controls UBound behaviour |
|||||||||||||||||||||||