Funktionen erstellen

Anfängerfragen zum Programmieren mit PureBasic.
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Funktionen erstellen

Beitrag von Raphi »

Hallo, Wie kann man eiegen funktionen erstellen (das müsste doch irgendwie gehen)?
iostream
Beiträge: 109
Registriert: 15.06.2008 12:59

Beitrag von iostream »

Code: Alles auswählen

Procedure Test()
  ; hier dein Code
EndProcedure

Test()  ; Aufruf deiner eigenen Prozedur
Mfg
iostream
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Beitrag 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
Benutzeravatar
Kurzer
Beiträge: 1617
Registriert: 25.04.2006 17:29
Wohnort: Nähe Hamburg

Beitrag 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?
"Never run a changing system!" | "Unterhalten sich zwei Alleinunterhalter... Paradox, oder?"
PB 6.12 x64, OS: Win 11 24H2 x64, Desktopscaling: 150%, CPU: I7 12700 H, RAM: 32 GB, GPU: Intel(R) Iris(R) Xe Graphics | NVIDIA GeForce RTX 3070
Useralter in 2025: 57 Jahre.
iostream
Beiträge: 109
Registriert: 15.06.2008 12:59

Beitrag 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.
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Beitrag 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
iostream
Beiträge: 109
Registriert: 15.06.2008 12:59

Beitrag von iostream »

Eine Prozedur ist doch so was ähnliches, oder
Eine Prozedur hat keinen Rückgabewert, eine Funktion hingegen schon.
Raphi
Beiträge: 175
Registriert: 06.08.2009 16:32
Computerausstattung: Intel Core 2 Duo Processor (2 x 3 Ghz), ATI Radeon HD 4870 (512 MB), 4 GB DDR-2 Ram, Microsoft Windows 7 Ultimate, MBox 2 Mini Soundkarte

Beitrag 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?
iostream
Beiträge: 109
Registriert: 15.06.2008 12:59

Beitrag 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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Das steht auch in der Hilfe.
Antworten