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
MfG
roboehler
Edit by NicTheQuick: Code-Tags gesetzt