wer VBScript ein wenig kennt, der weiss vielleicht, dass die Verwendung
von COM-Objekten relativ einfach zu handhaben ist.
Code: Alles auswählen
myObject = CreateObject("Microsoft.XMLDOM")
myObject.Load("MeineXmlDatei.Xml")
werden.
Unter PB gestaltet sich die Aufgabe ein wenig komplizierter. Wenn man auf
ein COM-Objekt zugreifen möchte, dann muss man zuvor ein
entsprechendes Interface schreiben, in dem festgelegt wird, welche
Methoden dieses Objektes mit welchen Parametern aufzurufen sind. Wer
mal einen Blick in meinen MSXML-Wrapper (im PBOSL-Paket) geworfen
hat, kann erahnen, dass das eine ziemlich umfangreiche und ermüdende
Arbeit ist (und das frustrierende ist: Mit meinem Wrapper kann man
nur das MSXML-Objekt verwenden; viele hundert andere COM-Objekte
warten nur darauf, dass man sie 'anzapft').
Wäre es also nicht viel besser, wenn man COM-Objekte in einer ähnlichen
Syntax ansprechen könnte, wie man es in dem VB-Script-Schnippsel oben
tut?
Der ein oder andere Interessierte hat sich vielleicht mal FreeBasic
angeschaut. Dort gibt's ein Include namens disphelper.bi. Wenn man diese
Datei in sein Projekt einbindet, dann ist man dort in der Lage, folgende
Syntax zu verwenden:
Code: Alles auswählen
dhCreateObject( "Microsoft.XMLDOM", NULL, @myObject )
dhCallMethod( myObject, ".Load(%s)", "MeineXmlDatei.Xml" )
aufrufen (dhCallMethod), Werte setzen (dhGetValue) und auslesen
(dhGetValue). Das geht wunderbar einfach.
Die FreeBasic-disphelper.bi-Datei ist eine Umsetzung eines C-Codes, der
hier zu finden ist (besteht aus einer *.c- und einer *.h-Datei). Leider bin
ich sowohl fachlich und auch vom zeitlichen nicht in der Lage, diesen Code
unter PB nutzbar zu machen. Zwar kann man die Routine prima in eine
DLL kompilieren, die man mit PB öffnen kann, die Parameterübergabe
jedoch macht mir Kopfzerbrechen. Auch an einem Import eine statischen
Lib bin ich bisher gescheitert.
Obwohl ich persönlich an dieser Stelle das disphelper-Handtuch werfen
werde, wäre es dennoch schade, wenn man eine so schöne Erleichterung
für die Programmierung von COM-Objekten unter PB so einfach unter den
Tisch fallen lassen würde.
Vielleicht erbarmt sich ja jemand, aus dem C-Code eine Dll oder Lib für PB
zu erzeugen und diese einbindbar zu machen. Nicht übel wäre jedoch eine
komplette Konvertierung des C-Codes in PB

Damit würde man der PB-Community die Tür zur grossen weiten Welt der
COM-Programmierung aufstossen.

Grüße ... Kiffi