Consoledll mit Anwenderprogramm

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
roboehler
Beiträge: 12
Registriert: 03.01.2005 22:32
Wohnort: 78713 Schramberg

Consoledll mit Anwenderprogramm

Beitrag von roboehler »

Um mich mit der Erstellung und der Funktion von dlls vertraut zu machen,
habe ich ein Beispiel erstellt, das auf der Consolenebenefunktioniert. Das Beispiel ist noch ausbaufähig. Falls das jemand brauchen kann...
Beispielcode:

Code: Alles auswählen

 ;dll-teil compiliert als shared.dll in PBcompileroptionen 
;mit dem Namen mathe.dll
;dll-beginn:
ProcedureDLL plus()
OpenConsole()
PrintN("")
PrintN ("Ein kleines Beispielprogramm fuer eine DLL, die als  ")
PrintN ("Consolenanwendung funktioniert.  ")
PrintN ("Freeware von Robert Boehler -- roboehler@ web.de  ")
PrintN("")
PrintN ("Addition:")
PrintN("")
PrintN ("Erste Zahl(b) eingeben und danach ENTER druecken:")
b=Val(Input())
PrintN("") 
PrintN ("Zweite Zahl(c) eingeben und danach ENTER druecken:")
c=Val(Input())
PrintN("")
a=b+c
Print("Ergebnis von Zahl b= " + Str(b) + " plus Zahl c= " + Str(c) + " ist:  ")
PrintN(Str(a))
PrintN("")
PrintN ("Bitte ENTERtaste druecken zum Fortfahren.....")
Input()
CloseConsole() 
EndProcedure

ProcedureDLL mal()
OpenConsole()
PrintN ("Multiplikation:")
PrintN("")
PrintN ("Erste Zahl(b) eingeben und danach ENTER druecken:")
b=Val(Input())
PrintN("") 
PrintN ("Zweite Zahl(c) eingeben und danach ENTER druecken:")
c=Val(Input())
PrintN("")
a=b*c
Print("Ergebnis von Zahl b= " + Str(b) + " mal Zahl c= " + Str(c) + " ist:  ")
PrintN(Str(a))
PrintN("")
PrintN ("Bitte ENTERtaste druecken zum Fortfahren.....")
Input()
CloseConsole() 
EndProcedure

ProcedureDLL minus()
OpenConsole()
PrintN ("Subtraktion:")
PrintN("")
PrintN ("Erste Zahl(b) eingeben und danach ENTER druecken:")
b=Val(Input())
PrintN("") 
PrintN ("Zweite Zahl(c) eingeben und danach ENTER druecken:")
c=Val(Input())
PrintN("")
a=b-c
Print("Ergebnis von Zahl b= " + Str(b) + " minus Zahl c= " + Str(c) + " ist:  ")
PrintN(Str(a))
PrintN("")
PrintN ("Bitte ENTERtaste druecken zum Fortfahren.....")
Input()
CloseConsole() 
EndProcedure

ProcedureDLL geteilt()
OpenConsole()
PrintN ("Division:")
PrintN("")
PrintN ("Erste Zahl(b) eingeben und danach ENTER druecken:")
b=Val(Input())
PrintN("") 
PrintN ("Zweite Zahl(c) eingeben und danach ENTER druecken:")
c=Val(Input())
PrintN("")
a=b/c
Print("Ergebnis von Zahl b= " + Str(b) + " geteilt durch Zahl c= " + Str(c) + " ist:  ")
PrintN(Str(a))
PrintN("")
PrintN ("Das war das letzte Beispiel von mathedll_lad.pb und der mathe.dll")
PrintN ("Die mathe.dll wurde als mathdll.pb geschrieben u. dann kompiliert als DLL")
PrintN ("mit der shared dll-Option des PB-Compilers")
PrintN("")
PrintN (" Programmende! --- Bitte ENTERtaste druecken zum Fortfahren.....")
Input()
CloseConsole() 
EndProcedure

;dll geht bis endprocedure - ohne Anwenderteil compilieren!!

; ExecutableFormat=Shared Dll
; Executable=L:\purebasic392\mathe.dll
; EOF

und hier kommt nun der Anwenderteil, der im Editor ausgeführt wird.
Beispielcode:
 ; Nun der Anwenderteil - das Anwenderprogramm,
 ; welches die mathe.dll nutzt,die aus mathdll.pb compiliert wurde.....
 ; Now the client program, which use the DLL
If OpenLibrary(0, "mathe.dll")
  CallFunction(0, "plus")
  CallFunction(0, "mal")
  CallFunction(0, "minus")
  CallFunction(0, "geteilt")
CloseLibrary(0)
EndIf
Gerade als Anfänger ist man froh, wenn man so was im Archiv oder Forum finden kann.
MfG
roboehler

Edit by NicTheQuick: Code-Tags gesetzt
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Beitrag von Kekskiller »

Naja, wenn du meinst :lol: .
Für sowas ist auch die Hilfe gut genug...
Antworten