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 :D :D

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 :wink:
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:

Code: Alles auswählen

Function = IsFunction(0,FunctionName$) 
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