Prozeduren
BeschreibungProcedure[.<Typ>] Name(<Variable1>[,<Variable2>,...]) ... [ProcedureReturn Wert] EndProcedure
Eine Procedure ist ein Programmteil, welcher unabhängig vom Hauptcode innerhalb des Programms ist und seine eigenen Parameter und Variablen haben kann. In PureBasic wird bei Prozeduren die Rekursion voll unterstützt, jede Prozedur kann sich auch selbst aufrufen. Die Variablen innerhalb der Prozedure erhalten bei jedem Aufruf der Prozedur standardmäßig den Wert 0 (null). Um auf Variablen des Hauptprogramms zugreifen zu können, müssen diese mit der Prozedur "geteilt" (shared) werden. Dies ist mit den Shared oder Global Schlüsselworten möglich (siehe auch die Protected und Static Schlüsselwörter).
Eine Prozedur kann wenn nötig ein Ergebnis (Variable, String) zurückliefern. Sie müssen in diesem Fall nach Procedure den Typ (.Typ) festlegen und das ProcedureReturn Schlüsselwort an einem beliebigen Punkt innerhalb der Prozedur aufrufen. Ein Aufruf von ProcedureReturn verlässt umgehend die Prozedur, auch wenn er innerhalb einer Schleife erfolgt.
Hinweis: Für die Rückgabe von Strings aus DLLs, siehe DLLsBeispiel: Prozedur mit einer Long-Variable als Rückgabewert
Procedure.l Maximum(nb1.l, nb2.l) If nb1>nb2 Result.l = nb1 Else Result = nb2 EndIf ProcedureReturn Result EndProcedure Result.l = Maximum(15,30) Debug ResultBeispiel: Prozedur mit einem String als Rückgabewert
Procedure.s Attach(string1$,string2$) result$ = string1$+" "+string2$ ProcedureReturn result$ EndProcedure a$ = Attach("PureBasic","Coder") Debug a$
BeschreibungDeclare[.<Typ>] Name(<Variable1>[,<Variable2>,...])
Manchmal ist es notwendig, dass eine Prozedur von einer anderen Prozedur aufgerufen wird, bevor sie überhaupt deklariert wurde. Dies ist ärgerlich, da der Compiler dies mit 'Prozedur xxxx nicht gefunden' reklamiert. Das Deklarieren mit Declare kann in diesem konkreten Fall helfen, in dem zu Beginn nur der Kopf ('Header') der Prozedur deklariert wird. Nichtsdestotrotz, die Deklarierung des Headers und die tatsächliche Deklarierung der Prozedur müssen identisch sein (einschließlich der Typen-Angabe nach dem Prozedurnamen).Beispiel:
Declare Maximum(Wert1, Wert2) Procedure Operate(Wert) Maximum(10, 2) ; Zu dieser Zeit ist Maximum() nicht bekannt. EndProcedure Procedure Maximum(Wert1, Wert2) ProcedureReturn 0 EndProcedure