COM-DLLs mit twinBASIC

Bisher haben wir COM-DLLs entweder mit Visual Studio 6 erstellt oder mit Visual Studio .NET. Mit twinBASIC kommt nun eine weitere Möglichkeit hinzu. twinBASIC ist noch in der Entwicklung, aber Sie können damit durchaus bereits lauffähige COM-DLLs bauen. Dieser Beitrag zeigt, wie Sie das Beispiel-COM-DLL des Entwicklers von twinBASIC, Wayne Philips, verwenden und wie Sie eigene Funktionen hinzufügen.

Vorbereitungen zum Erstellen von COM-DLLs mit twinBASIC

Den Großteil der Vorbereitungen für den Einsatz von twinBASIC haben wir im Beitrag twinBASIC – VB/VBA mit moderner Umgebung (www.access-im-unternehmen.de/1303) beschrieben. Hier erfahren Sie, wie Sie die Entwicklungsumgebung VS Code installieren und die benötigte Erweiterung twinBASIC hinzufügen. Außerdem haben wir dort ein kleines Beispielprojekt demonstriert.

Aktuelle Versionen

Neben der Version, die wir für die Beschreibungen in diesem Beitrag genutzt haben, wird twinBASIC aktuell sehr schnell weiterentwickelt.

Da es für uns Access-Entwickler sehr ungewohnt ist, dass eine Entwicklungsumgebung weiterentwickelt wird (und das auch noch schnell), weisen wir hier explizit darauf hin, dass es aktuelle Versionen und Informationen an folgenden Orten gibt:

  • Die aktuellen Downloads finden Sie unter https://twinbasic.com.
  • Bugs et cetera können Sie hier melden oder auch einsehen: https://github.com/WaynePhillipsEA/twinbasic/issues

Auf https://twinbasic.com finden Sie auch einige Beispiele, unter anderem das hier als Grundlage verwendete Beispiel für eine ActiveX-DLL.

Beispiel herunterladen

Die zum Zeitpunkt der Erstellung dieses Beitrags verwendete Version des Beispiels finden Sie wie gewohnt im Download zu diesem Beitrag, aktuellere Versionen gegebenenfalls unter dem oben genannten Link.

Wenn Sie die Zip-Datei heruntergeladen haben, finden Sie darin zwei Dateien – eine mit der Dateiendung .code-workspace und eine mit der Dateiendung .twinproj. Um das Projekt zu öffnen, klicken Sie doppelt auf die Datei mit der Dateiendung .code-workspace (gegebenenfalls müssen Sie die Dateiendung noch mit dieser Anwendung verknüpfen).

Dies öffnet den Arbeitsbereich, der sowohl das Projekt aus der .twinproj-Datei anzeigt als auch alle notwendigen Einstellungen enthält. Das Ergebnis sieht nach einem Doppelklick auf den Eintrag HelloWorld.twin im Ordner Sources wie in Bild 1 aus.

COM-Add-In-Projekt in VS Code

Bild 1: COM-Add-In-Projekt in VS Code

Wir sehen hier eine Klasse namens MyTestLibrary mit einer einzigen öffentlich deklarierten Funktion namens MultipleByTen.

Projekt erstellen

Wir schauen uns zunächst an, wie wir die COM-DLL zum Laufen bringen. Dazu brauchen Sie lediglich auf die Schaltfläche Build im Bereich TWINBASIC zu klicken.

Dies erzeugt die .dll-Datei im Ordner Build des Projektordners und legt gleichzeitig die benötigten Einträge in der Registry an – dazu später mehr.

COM-DLL einbinden

Wir öffnen eine Access-Datenbank und starten den VBA-Editor. Hier rufen wir mit dem Menü-Eintrag –Extras|Verweise den Verweise-Dialog auf. Dieser bietet unter dem Namen MyTestLibrary project einen neuen Eintrag zum Einbinden der DLL an (siehe Bild 2). Diesen aktivieren wir durch Platzieren eines Hakens im entsprechenden Kontrollkästchen.

Verweis auf die DLL

Bild 2: Verweis auf die DLL

Befehle der COM-DLL ausprobieren

Danach können Sie im VBA-Editor folgende Prozedur anlegen:

Public Sub TestCOMDLL()
     Dim obj As MyTestLibrary
     Set obj = New MyTestLibrary
     Debug.Print obj.MultiplyByTen(10)
End Sub

Rufen Sie die Prozedur auf, liefert diese mit dem Wert 100 das korrekte Ergebnis. Auch IntelliSense funktioniert sehr gut mit der Funktion (siehe Bild 3).

IntelliSense mit der COM-DLL

Bild 3: IntelliSense mit der COM-DLL

Late Binding

Das Erstellen funktioniert auch mit Late Binding. Allerdings müssen Sie die Bibliothek zusätzlich zur Klasse angeben. Das sieht dann beispielsweise wie folgt aus:

Public Sub TestCOMDLL1()
     Dim obj As Object
     Set obj = CreateObject( "MyTestLibraryProject.MyTestLibrary")
     Debug.Print obj.MultiplyByTen(10)
End Sub

Geben Sie die Bibliothek nicht an, führt dies zu dem Fehler aus Bild 4.

Fehler beim Versuch, die Klasse per Late Binding zu nutzen

Bild 4: Fehler beim Versuch, die Klasse per Late Binding zu nutzen

Registrierung der COM-DLL

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar