Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Visual Basic 6.0 / VBA » Vb-arrays an eine C++-dll

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
28.08.2003, 16:03 Uhr
~Doc
Gast


Hallo
Du willst also von einer C++ DLL auf ein VBA-Array zugreifen.
Das kleine Programm zeigt den Inhalt des Angegebenen Array-Elements in einer MsgBox an.

Erst mal brauchen wir in VB ein Array:

Visual Basic:
dim Texte() as string
redim Texte(100)
Texte(5) = Hallo Welt!"



Die größe der Strings ist völlig egal, müssen also keine feste größe haben
Die Deklaration für die DLL-Routine sieht dann z.B. so aus:

Visual Basic:
Declare sub ArrayMsgBox Lib "xy.dll" (xArray() As Any, byval Index as long)


Der Funktionsaufruf wäre dann:

Visual Basic:
ArrayMsgBox Texte(), 5    'Wäre also "Hallo Welt!" in der MsgBox



Basic speichert seine Arrays in "SaveArrays".
In C++ lautet das dann:

C++:
void ArrayMsgBox(LPSAFEARRAY FAR * sArray, long Index)
{
   // Startadresse der eigentlichen Daten ermitteln
   long *StAdr;
   StAdr = (long*)((*sArray)->pvData);

   // Start des Array -> entspricht bei VBA LBound(Texte)
   long LBound = ((*sArray)->rgsabound->lLbound);        
  
   // Zeiger auf den Text ermitteln
   long *MsgText;
   MsgText = StAdr - LBound + Index;

   MessageBox(0,(char*)*MsgText, "ArrayMsgBox", 0);
}



Ich habe da mit Absicht auf Fehlerüberprüfungen verzichtet.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
28.08.2003, 17:02 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
danke für Eure Mühen, aber der Thread wurde hier:
www.fun-soft.de/showtopic.php?threadid=3309
weitergeführt und abgeschlossen
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
28.08.2003, 17:08 Uhr
Pablo
Supertux
(Operator)


@Uwe: stimmt, ich hatte das vergessen! Das haben wir schon mal besprochen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ Visual Basic 6.0 / VBA ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: