Avatar billede reds2001 Nybegynder
11. april 2002 - 14:22 Der er 3 kommentarer og
4 løsninger

ARRAY

Hvordan overføre jeg et array af integers som funktionsparameter fra VB til VC++ og omvendt??
Avatar billede soepro Nybegynder
11. april 2002 - 16:04 #1
Kan du ikke umiddelbart - men du kan snyde sådan her: gem adressen på dit array i en pointer. "Oversæt" den til tekst vha. noget der ligner sprintf("%lu", (int)ptrArray); og send den så som parameter i kaldet til dit VC+ program, f.eks. som /P:1234567890 eller hvad pointerens numeriske værdi nu bliver. I dit C++ program henter du parameteren igen vha. f.eks. ptrArray = (ARRAY *)StrToInt(GetParamstr(1).Substring(3, 10)); og violetta, så har du adgang til dit VB programs ARRAY direkte.

HUSK - det er selvfølgelig yderst vigtigt at de to arrays er fuldstændig ens defineret, ellers kan du lave rigtig meget ballade. (Hvis f.eks. en integer nu kun er 16 bit i VB med 32 i VC eller omvendt.)
Avatar billede jpk Nybegynder
12. april 2002 - 09:05 #2
Hvis du fx tænker på et VB-program der skal kalde noget funktionalitet i et COM-objekt, med et array som parameter, kan du gøre følgende:
Pakke arrayet ind i en variant og bruge den som parameter. "På den anden side" pakker du så dine data ud igen.
Avatar billede soepro Nybegynder
12. april 2002 - 09:48 #3
jpk >> Netop det princip jeg skitserer.
Avatar billede jpk Nybegynder
12. april 2002 - 10:05 #4
Jo, bortset fra det med at rode med strenge.
Avatar billede reds2001 Nybegynder
12. april 2002 - 10:33 #5
JPK<<Hvordan 'pakker' jeg en variant fra vb ud i vc++??
Avatar billede laffe Nybegynder
16. april 2002 - 22:13 #6
Ovefør værdierne som en buffer af bytes eg:

void test(unsigned char *buffer, int size)
{

}

Den funktion som modtager 'buffer', skal så bare konvertere den tilbage til et array af int.

Hvis du kender max størelsen på det array der skal overføres, så kan du med fordel kopiere buffer over i en union.
Avatar billede reds2001 Nybegynder
17. april 2002 - 09:08 #7
Jeg har løst problemet selv men tak for indsatsen. I får lidt for anstrngelserne ;-)
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