Einzelnen Beitrag anzeigen

Benutzerbild von Lemmy1
Lemmy1

Registriert seit: 28. Nov 2004
Ort: Ismaning
184 Beiträge
 
Delphi 2006 Professional
 
#1

Inkompatibilität Delphi und VB6 via ActiveX bei VARIANT_BOOL

  Alt 23. Mär 2006, 22:07
Hallöchen,

wollte eine Library in Delphi 2006 schreiben, die dann andere in VB6 Anwendungen einbauen sollten. Funktioniert größtenteils auch recht gut, aber ich hatte da eine Inkompatibilität im Zusammenhang mit VARIANT_BOOLs und Records:

Sobald man so ein VARIANT_BOOL Feld einbaut, scheint danach die Record-Anordnung nichtmehr zu stimmen. Ändert man manuell in der generierten _TLB.pas den Datentyp WordBool in LongBool, so crasht VB6 bei der Verwendung nicht; allerdings ändert der Delphi Codegenerator das sofort zurück, so dass man diese Änderung nur einmal ausprobieren kann.

Einen Screenshot der TLB habe ich angehängt (Wobei die Felder die Typen BSTR - VARIANT_BOOL - BSTR sind).

Ich habe ein Beispielprojekt angehängt, das das Problem demonstriert. Dazu muss zu erst die Delphi-DLL mit "regsvr32" oder via Delphi IDE registriert werden. Wenn man es dann startet sieht man, dass der erste String funktioniert, der VARIANT_BOOL auch aber dann schmiert das Programm (bzw. die VB6 IDE) mit einer Schutzverletzung ab.

Ist das ein Bug in Delphi ? Meiner Meinung müsste hinter dem VARIANT_BOOL noch ein Padding von 16Bit rein, aber wenn man keine Ahnung einfach mal Fr**** halten

Wär super, wenn sich das mal einer anschauen könnte!

Vielen Dank im Vorraus
Miniaturansicht angehängter Grafiken
vbbug1_398.png  
Angehängte Dateien
Dateityp: zip variantboolbug_178.zip (78,4 KB, 8x aufgerufen)
Daniel
www.nemu.com - The N64 Emulator
  Mit Zitat antworten Zitat