Seite 1 von 3

Funktionen erstellen

Verfasst: 19.08.2009 14:56
von Raphi
Hallo, Wie kann man eiegen funktionen erstellen (das müsste doch irgendwie gehen)?

Verfasst: 19.08.2009 14:57
von iostream

Code: Alles auswählen

Procedure Test()
  ; hier dein Code
EndProcedure

Test()  ; Aufruf deiner eigenen Prozedur
Mfg
iostream

Verfasst: 19.08.2009 14:59
von Raphi
Danke <)

gibt es auch eine möglichkeit diese funktion so zu speichern das man einfach(in diesem beispiel

Code: Alles auswählen

Probe()
abruft ohne Procedure ... EndProcedure vorher aufzurufen

Verfasst: 19.08.2009 15:03
von Kurzer
Da es um Funktion ging, hier eine Funktion:

Code: Alles auswählen

Procedure.i SinndesLebens()
  ProcedureReturn 42
EndProcedure

Debug SinndesLebens()
Raphi, Probe() ist eine Prozedur, keine Funktion.
Die Prozedur muß natürlich erstmal erstellt und mit Leben gefüllt werden, woher soll PB sonst wissen was Probe() tun soll?

Verfasst: 19.08.2009 15:05
von iostream
Na ja du musst ja deine Prozedur vorher definieren eh du sie verwenden kannst, d.h irgendwo in deinem Code muss Procedure...EndProcedure stehen.

Du kannst allerdings deine Prozedur(en) in eine DLL packen und diese dann in deinem Programm dynamisch laden,
so das Procedure...EndProcedure nicht nötig ist.

Zweite Möglichkeit ist das du oft benutzte Prozeduren separat in einer zentralen Datei speicherst und diese mit IncludeFile in deinen aktuellen Code einbindest.

Verfasst: 19.08.2009 15:06
von Raphi
Eine Prozedur ist doch so was ähnliches, oder

Und ich dacht halt man könnte das irgenwie in der pure basic library speichern so dass man es nur noch so aufrufen muss

Verfasst: 19.08.2009 15:07
von iostream
Eine Prozedur ist doch so was ähnliches, oder
Eine Prozedur hat keinen Rückgabewert, eine Funktion hingegen schon.

Verfasst: 19.08.2009 15:07
von Raphi
D.H. Man kann nicht überprüfen ob sie erfolgreich war?


Dann müsst ich jetzt nur noch wissen wie ich eine prozedur in eine Dll packe?

Verfasst: 19.08.2009 15:14
von iostream

Code: Alles auswählen

ProcedureDLL.b Test()
  ProcedureReturn 42
EndProcedure
Bei Compiler-Optionen/Executable-Format "Shared Dll" angeben und dann im Compilermenü "Executable erzeugen" wählen. Dann hast du eine DLL mit deiner Funktion erzeugt.

Dann in einer neuen PB-Datei:

Code: Alles auswählen

; Wichtig: DLL muss sich im Verzeichnis deines Programms befinden.

If OpenLibrary(0, "mydll.dll")
  Debug CallFunction("Test")
Else
  Debug "Konnte DLL nicht laden."
EndIf

Verfasst: 19.08.2009 15:14
von NicTheQuick
Das steht auch in der Hilfe.