Procedure Parameter Array mit Default Wert möglich?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
SieGeL2k22
Beiträge: 5
Registriert: 16.05.2022 06:10
Computerausstattung: Ryzen 1800X, 16GB RAM, 1,2TB SSD, Windows 10
Wohnort: Berlin
Kontaktdaten:

Procedure Parameter Array mit Default Wert möglich?

Beitrag von SieGeL2k22 »

Hallo Community,

besteht die Möglichkeit in PB, Arrays als optionale Parameter einer Procedure zu definieren?

Ich würde gerne bei folgender Definition

Code: Alles auswählen

Procedure Call(url.s, method, Array postdata(1), Array params(1))
postdata() und params() optional haben, kann aber leider in der Doku dazu nichts passendes finden, ob das überhaupt möglich ist?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6894
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Procedure Parameter Array mit Default Wert möglich?

Beitrag von STARGÅTE »

Nein (leider) nicht. Du kannst aber das Array in eine Struktur verpacken und dann optional diese Struktur übergeben:
Das Array verhält sich dann wie ein normaler Array-Parameter, dass heißt, er wird per Referenz übergeben (also keine Kopie) sodass Änderungen in der Prozedur übernommen werden.

Code: Alles auswählen

Structure MyArray
	Array i.i(0)
EndStructure

Procedure Call(url.s, method, *postdata.MyArray=#Null, *params.MyArray=#Null)
	
	If *postdata
		Debug ArraySize(*postdata\i())
		*postdata\i(1) = 456
	EndIf
	
EndProcedure


Define postdata.MyArray : Dim postdata\i(10)

postdata\i(0) = 123

Call("Blub", 1, postdata)

Debug postdata\i(1)
PB 5.73 ― Win 10, 20H2 ― Ryzen 9 3900X ― Radeon RX 5600 XT ITX ― Vivaldi 5.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
SieGeL2k22
Beiträge: 5
Registriert: 16.05.2022 06:10
Computerausstattung: Ryzen 1800X, 16GB RAM, 1,2TB SSD, Windows 10
Wohnort: Berlin
Kontaktdaten:

Re: Procedure Parameter Array mit Default Wert möglich?

Beitrag von SieGeL2k22 »

@STARGÅTE: Okay alles klar, ich hatte auch schon überlegt gehabt, das über eine Struct zu realisieren, wollte aber sicherheitshalber noch mal nachfragen.

Dann werde ich das mal so machen, vielen Dank für Deine Antwort!
Antworten