Seite 1 von 2
Anfänger will dll einbinden
Verfasst: 10.09.2004 19:35
von Toby
Hi,
also mal vorne weg, bin BlitzBasic/Blitz3D programmierer und hab' demnach null Ahnung von dll Dateien.
Ich will meine DMX-512 (Lichtanlage) über den Computer steuern. Ich habe da so ein Gerät, dass das kann.
Die Firma liefert eine SOftware mit, aber stellt auch dlls zu Verfügung, um ein eigenes Programm zu schreiben. Nun da dass unter Blithz Basic schlecht geht habe ich mich ein bisschen in PureBasic reingearbeitet, aber nicht dergleichen gefunden, was mein Problem lösen könnte oder mir ansatzweise helfen könnte.
Deshalb wäre ich für jede hilfe Dankbar. Vielleicht hat ja schon jemand von euch seine eigene Software für das Gerät programmiert??
Die Dateien (inkl. für mich unverständlicher erklärung für Delphi und Visual Basic 6) gibt's unter
http://www.monacor.com/de/updates.html?spr=DE.
('DMX-DLL.zip' heißt dass)
Ich hab' das DMX-120 Gerät. Falls ih dass wissen müsst.
Also nochmals danke,
Toby

Re: Anfänger will dll einbinden
Verfasst: 18.09.2004 15:28
von BitHero
Toby hat geschrieben:...aber nicht dergleichen gefunden, was mein Problem lösen könnte oder mir ansatzweise helfen könnte.
Nanu? In der PB-Hilfe ist das ausführlich beschrieben unter "Library"...
du könntest es wie folgt lösen:
Code: Alles auswählen
OpenLibrary(0,DLLFileName$)
;wobei DLLFileName$ mit dem Dateinamen des .DLL Files zu ersetzen wäre
CallFunctionFast(0,FunctionName$) ;FunctionName$ ist der Name der Funktion
CloseLibrary(0)
im Zweifel einfach mal in der Hilfe genau hingucken
GreetZ
Marty
Verfasst: 18.09.2004 18:53
von Deeem2031
Also so würd ich das nicht machen... schließlich ist ein Sprung nach 0 nicht sehr empfehlenswert
Also entweder so:
Code: Alles auswählen
OpenLibrary(0,DLLFileName$)
;wobei DLLFileName$ mit dem Dateinamen des .DLL Files zu ersetzen wäre
CallFunction(0,FunctionName$) ;FunctionName$ ist der Name der Funktion
CloseLibrary(0)
oder so:
Code: Alles auswählen
OpenLibrary(0,DLLFileName$)
;wobei DLLFileName$ mit dem Dateinamen des .DLL Files zu ersetzen wäre
Function = IsFunction(0,FunctionName$)
CallFunctionFast(Function) ;FunctionName$ ist der Name der Funktion
CloseLibrary(0)
Noch schöner isses natürlich wenn man abfragt obs die Function überhaupt gibt, aber dazu bin ich jetzt zu faul

Verfasst: 18.09.2004 22:03
von coldarchon
Deeem2031 hat geschrieben:Code: Alles auswählen
OpenLibrary(0,DLLFileName$)
;wobei DLLFileName$ mit dem Dateinamen des .DLL Files zu ersetzen wäre
Function = IsFunction(0,FunctionName$)
CallFunctionFast(Function) ;FunctionName$ ist der Name der Funktion
CloseLibrary(0)
Noch schöner isses natürlich wenn man abfragt obs die Function überhaupt gibt, aber dazu bin ich jetzt zu faul

schon wieder ein huh?
Wofür ist denn sonst IsFunction()
Verfasst: 18.09.2004 22:27
von Deeem2031
coldarchon hat geschrieben:Deeem2031 hat geschrieben:Code: Alles auswählen
OpenLibrary(0,DLLFileName$)
;wobei DLLFileName$ mit dem Dateinamen des .DLL Files zu ersetzen wäre
Function = IsFunction(0,FunctionName$)
CallFunctionFast(Function) ;FunctionName$ ist der Name der Funktion
CloseLibrary(0)
Noch schöner isses natürlich wenn man abfragt obs die Function überhaupt gibt, aber dazu bin ich jetzt zu faul

schon wieder ein huh?
Wofür ist denn sonst IsFunction()
Sieht man das nicht an dem Code ?! Ich geb doch den RückgabeWert an CallFunctionFast() weiter.
IsFunction gibt nämlich nicht nur zurück obs die Function gibt oder nicht, sondern gibt den Pointer zur Function.
Verfasst: 19.09.2004 09:09
von coldarchon
Deeem2031 hat geschrieben:Sieht man das nicht an dem Code ?!
eben, dass ist es ja.
Deeem2031 hat geschrieben:
Deeem2031 hat geschrieben:wenn man abfragt obs die Function überhaupt gibt, aber dazu bin ich jetzt zu faul
Du sagtest Du bist zu faul eine solche Abfrage zu erstellen, obwohl es sie da gibt, oder nicht?
Verfasst: 19.09.2004 09:58
von DarkDragon
Nein gibt es nicht. Sonst wäre da ein "IF Function <> 0"
[EDIT]
Hmm... schaut euch mal die Überschrift genau an. Ich denke er will die DLL mit in die Executable einbinden.
Verfasst: 19.09.2004 12:47
von Deeem2031
Genau, mit Abfrage sieht das dann nämlich so aus:
Code: Alles auswählen
OpenLibrary(0,DLLFileName$)
;wobei DLLFileName$ mit dem Dateinamen des .DLL Files zu ersetzen wäre
Function = IsFunction(0,FunctionName$)
If Function
CallFunctionFast(Function) ;FunctionName$ ist der Name der Funktion
EndIf
CloseLibrary(0)
Und wenn mans noch besser machen will macht mans so:
Code: Alles auswählen
If OpenLibrary(0,DLLFileName$)
;wobei DLLFileName$ mit dem Dateinamen des .DLL Files zu ersetzen wäre
Function = IsFunction(0,FunctionName$)
If Function
CallFunctionFast(Function) ;FunctionName$ ist der Name der Funktion
EndIf
CloseLibrary(0)
EndIf
Verfasst: 20.09.2004 08:29
von coldarchon
Deeem2031 hat geschrieben:Code: Alles auswählen
Function = IsFunction(0,FunctionName$)
If Function
CallFunctionFast(Function) ;FunctionName$ ist der Name der Funktion
womit würde denn CallFunctionFast(Function) ausgeführt, wenn da kein "If Function" steht?
Verfasst: 20.09.2004 09:10
von Kiffi
> womit würde denn CallFunctionFast(Function) ausgeführt, wenn da kein "If Function" steht?
wenn Function keinen Wert zurückliefert, dann ist FunctionName nicht vorhanden. Aus
diesem Grund kann dann auch kein CallFunction(-Fast) ausgeführt werden.
Grüße ... Kiffi