Anfänger will dll einbinden

Für allgemeine Fragen zur Programmierung mit PureBasic.
Toby
Beiträge: 1
Registriert: 10.09.2004 19:28

Anfänger will dll einbinden

Beitrag 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
Benutzeravatar
BitHero
Beiträge: 22
Registriert: 17.09.2004 14:13
Wohnort: Burgwedel
Kontaktdaten:

Re: Anfänger will dll einbinden

Beitrag 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
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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 ;)
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
coldarchon
Beiträge: 26
Registriert: 08.09.2004 09:33
Kontaktdaten:

Beitrag 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()
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
coldarchon
Beiträge: 26
Registriert: 08.09.2004 09:33
Kontaktdaten:

Beitrag 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?
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Zuletzt geändert von DarkDragon am 19.09.2004 12:49, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag 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
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
coldarchon
Beiträge: 26
Registriert: 08.09.2004 09:33
Kontaktdaten:

Beitrag 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?
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
Antworten