seit gestern habe ich nun eine PureBasic Lizenz und muß schon die Funktionen einer externen DLL benutzen. Vielleicht schon die höheren Weihen - aber es geht kein Weg daran vorbei und ich wie erwartet funktioniert es nicht und ich habe keinen Plan.
Mit dem OLE/COM Interface Generator habe ich mir zuerst einmal die Wrapper-Datei erstellt, die ich mit XIncludeFile eingebunden habe. Darin finde ich jetzt Definitionen wie bspw.
Code: Alles auswählen
CompilerIf Defined(Recordset,#PB_Interface) = #False
Interface Recordset ; Recordset Interface
QueryInterface(riid.l,ppvObj.l)
AddRef()
Release()
GetTypeInfoCount(pctinfo.l)
GetTypeInfo(itinfo.l,lcid.l,pptinfo.l)
GetIDsOfNames(riid.l,rgszNames.l,cNames.l,lcid.l,rgdispid.l)
Invoke(dispidMember.l,riid.l,lcid.l,wFlags.l,pdispparams.l,pvarResult.l,pexcepinfo.l,puArgErr.l)
MoveFirst()
AddNew()
Close()
Delete()
Edit()
FindFirst(Criteria.p-bstr)
FindNext(Criteria.p-bstr)
MoveLast()
MoveNext()
MovePrevious()
Update()
CloseX()
get_NoMatch(Criteria.l)
get_RecordCount(Criteria.l)
get_BOF(Criteria.l)
get_EOF(Criteria.l)
get_Fields(Criteria.l)
get_XML(Criteria.l)
EndInterface
CompilerEndIf
1.) Im obigen Code steht: CompilerIf Defined(Recordset,#PB_Interface)
Was bedeutet das für meinen Sourcecode? Wie muß die define-Anweisung in meinem Programm aussehen, damit ich die Funktion benutzen kann?
2.) In der Online-Hilfe zu COM finde ich folgendes:
...
; CreateObject ist die Funktion, welche das Objekt (aus der DLL) erstellt,
; dessen Interface gerade definiert wurde.
; Erstelle das erste Objekt...
;
;Object1.MyObject = MyCreateObject()
...
MyCreateObject ist was? Woher kommt das? In der Hilfe wird es jedenfalls nicht definiert. Im Internet und der Hilfe lese ich, daß ich mittels createobject die Funktion "ansprechen" muß.
Definiere ich also:
Code: Alles auswählen
myrecordset = createobject("recordset")
Bitte gebt einen kleinen Schubs in die richtige Richtung.
Gruß
Andreas