Avatar billede ljungberg Nybegynder
30. oktober 2001 - 12:37 Der er 9 kommentarer og
1 løsning

Parmeteroverførsel af array fra vb til c++

Jeg skal have en funktion i C++ til at modtage et array fra VB.

Nedenstående er der et kort eks. som ikke virker, da det array VB prøver at overføre er en Varians, mens C++ forventer et array af integer. Derfor kommer fejlen \"type mismatch\"

C++ koden:
#define MYTESTDLLEXIM extern \"C\" __declspec(dllexport)

#include \"main.h\"

MYTESTDLLEXIM long _stdcall BrugArray( int testarray[] )
{
    return ( testarray[1] );
}


VB-koden:
Option Explicit

Private Declare Function BrugArray Lib \"C:\\Documents and Settings\\mlj\\My Documents\\Data\\VisualProjects\\eks VB_C\\vb_code\\MyTestDll.dll\" (ByVal testarray As Integer) As Integer


Private Sub Form_Load()
    Dim testarray
    testarray = Array(10, 20)
    Debug.Print \"array: \" & BrugArray(testarray)
End Sub

Nogen der har ideer til hvordan jeg (optimalt set) får C++ til at arbejde med varians, eller (mindre optimalt) får VB til at overføre arrayet med den rigtige type istedet for varians??
Avatar billede disky Nybegynder
30. oktober 2001 - 12:40 #1
Er det VB array bestående af \'int\' `?
Avatar billede disky Nybegynder
30. oktober 2001 - 12:40 #2
du skal nok få VB til at lave et \'int\' array i stedet.

Eller generere et array af bytes, og så konvertere det.
Avatar billede ljungberg Nybegynder
30. oktober 2001 - 12:54 #3
Hvordan får jeg mit:
Dim testarray
testarray = Array(10, 20)
til at være integer
(jeg er ny i VB så bare forklar med kode)
Avatar billede disky Nybegynder
30. oktober 2001 - 12:54 #4
Aner det ikke jeg har aldrig kodet VB
Avatar billede kamikaze Nybegynder
30. oktober 2001 - 13:59 #5
Jeg mener du skal skrive:

Dim testarray as Integer
Avatar billede ljungberg Nybegynder
30. oktober 2001 - 14:49 #6
Så opfattes det ikke som et array mere og hvis jeg fx skriver \"Debug.Print testarray(0)\" som burde udskrive arrayets første plads, får jeg fejlen: \"expected array\"
Avatar billede galhund Nybegynder
31. oktober 2001 - 09:47 #7
For at oprette et array i VB skriv følgende:

Dim tastarray(10, 20) As Integer
Avatar billede futter2 Nybegynder
05. november 2001 - 23:20 #8
Jeg har ikke VB selv med prøv dette

MYTESTDLLEXIM long _stdcall BrugArray( int *testarray[] )
{
    return (&testarray[0]);
}



Private Declare Function BrugArray Lib \"C:\\Documents and Settings\\mlj\\My Documents\\Data\\VisualProjects\\eks VB_C\\vb_code\\MyTestDll.dll\" (ByVal testarray As Integer) As Integer

ByVal skal så være ByVar eller fjernes helt


Private Sub Form_Load()
    Dim testarray
    testarray = Array(10, 20)
    Debug.Print \"array: \" & BrugArray(testarray)
End Sub
Avatar billede ljungberg Nybegynder
30. november 2001 - 11:45 #9
I må undskylde at jeg ikke har givet noget respons. Jeg havde helt glemt diskussionen. Jeg arbejdet med SAFEARRAYS istedet, dette burde kunne løse problemet. Tak for indlæggende.
Avatar billede ljungberg Nybegynder
30. november 2001 - 11:46 #10
Jeg ville forresten have givet jer alle point, men kom til at give dem alle til den første på listen (jeg tror at det var disky) sorry.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester