array an DLL übergeben
-
@ Spezi L
Wenn ich Debugge schreibt er die richtigen Werte in das mac Array@ Mathias
Du meinst also, dass ein Int in C++ nicht gleich Lang wie ein Int in VB ist?
Oder wie meinst du das?
Der erste Wert des Feldes stimmt ja und wenn ich das mit Einzelwerten int,long... mache funktioniert es ja auch
-
Ob int's die selbe Größe haben, weiß ich nicht - aber offenbar ist ein VB-Array anders aufgebaut als ein C-Array.
-
Nein, was ich meinte ist das ein C++ Array nichts anderes ist als x Variablen des angegebenen Typs hintereinander aufgereiht (z.B. x mal int).
Dies muss in VB nicht unbedingt so sein, da kann z.B. zu jedem Eintrag zusätzliche Informationen hinter dem Eintrag abgelegt sein. Dann sind die Adressen der dem ersten Eintrag folgenden Einträge nicht identisch. (VB fragt den Wert somit an einer anderen Stelle ab als ihn C++ hingeschrieben hat.)
-
Ein VB Integer hat 2 Bytes. In VB sind Arrays eh ein wenig anders, Index beginnt bei 1, UBOUND liefert den höchsten Index zurück, und es ist auch erlaubt Arrays mit 0 Elementen anzulegen und mit ReDim größer zu machen. Wie sie im Speicher liegen, weiß wahrscheinlich nur MS selbst...
-
Damit wäre es klar. Is nix mit direkt Array übergeben...
-
@all Danke euch allen
Jetzt ist mir einiges klarer.
Damit wäre es klar. Is nix mit direkt Array übergeben...
Ich weiß aber, aus einem VB-Beispielprogramm dass es so geht. Allerdings wurde dort der Datentyp Byte verwendet. -> Ich weiß aber nicht, wie der C++-Code dazu aussieht. Byte wäre in C++ wahrscheinlich unsigned char nehme ich an.
Gruß Tupo13
-
Das ist eh schwierig, da in VB die Parameter default by Reference übergeben werden, kann aber abgeändert werden:
FUNCTION whatever(x AS LONG, ByVal y AS INTEGER) 'x wird by Reference übergeben, y by Value END FUNCTION
-
Ok die Lösung ist einfacher als gedacht
ein C(++) 'int' entspricht unter Win32 einem VB 'long' (beide 4 Byte groß). Ein VB 'integer' ist nur 2 Byte groß.
Deshalb waren die höheren Indexe stehts null oder hatten einen völlig unsinnigen Wert
Danke Nochmal
Gruß Tupo13