Prozedur mit 2 optionalen Parametern. Platzhalter bei Aufruf
-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Prozedur mit 2 optionalen Parametern. Platzhalter bei Aufruf
Wenn man eine Prozedur aufruft die 2 optionale Parameter hat, man aber nur den 2. füllen will gibt es dann einen Platzhalter für den 1. Parameter? Denn einfach leer lassen bzw Komma und Komma gibt einen Syntax-Fehler. Es wird, wenn der optionale 1. Parameter ein String ist auch ein String erwartet aber ein Leerstring würde den Standardwert der optionalen Variable überschreiben. Man muss also immer den Standardwert mit übergeben. Oder gibt es eine andere Möglichkeit?
Zweite Frage ist wie man in einem String escapen kann. ZB ein doppeltes Anführungszeichen innerhalb eines Strings unterbringen. Ich habe es bisher mit chr(34) gemacht aber gibt es ein Escaping?
Zweite Frage ist wie man in einem String escapen kann. ZB ein doppeltes Anführungszeichen innerhalb eines Strings unterbringen. Ich habe es bisher mit chr(34) gemacht aber gibt es ein Escaping?
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Escape-Sequenzen
Für den ersten optionalen Parameter einen Wert nehmen, der niemals Vorkommen sollte, so
kannst Du darauf reagieren.
Für den ersten optionalen Parameter einen Wert nehmen, der niemals Vorkommen sollte, so
kannst Du darauf reagieren.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Nein, gibt es in der Form nicht, Du musst dem Parameter in diesem Fall einen Wert zuweisen (das kann auch der vordefinierte Wert sein).SebastianJu2 hat geschrieben:Wenn man eine Prozedur aufruft die 2 optionale Parameter hat, man aber nur den 2. füllen will gibt es dann einen Platzhalter für den 1. Parameter?
Anstelle von Chr(34) kannst Du noch #DQUOTE$ verwenden, kommt aber auf das Selbe hinaus.SebastianJu2 hat geschrieben:Zweite Frage ist wie man in einem String escapen kann. ZB ein doppeltes Anführungszeichen innerhalb eines Strings unterbringen. Ich habe es bisher mit chr(34) gemacht aber gibt es ein Escaping?
Gruß, BI2
Edit: zu langsam

PB 5.7x (x64), LinuxMint 18.3 - Xfce (x64)
Einsteigerbuch: PureBasic - Eine Einführung in die Computer Programmierung
Einsteigerbuch: PureBasic - Eine Einführung in die Computer Programmierung
-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Ok... danke... ich schätze das Escapen haben die Entwickler gar nicht erst eingebaut weil es langsamer ist da der String erst überprüft werden muss. In php gibt es wohl einen merkbaren Unterschied zwischen Strings in einfachen Anführungszeichen, in denen keine Sonderzeichen interpretiert werden, und doppelten Anführungszeichen, zwischen denen auch Variablen ersetzt werden.
Ich denke dann lass ich das so.
@ts
Meine Funktion hat diesen Kopf:
Den Parameter Addition$ wollte ich mit einer extra Fehlermeldung füllen aber Action$ mit Create hätte gestimmt. Und Action$ wird dann direkt in die Fehlermeldung eingebaut. In dem Fall müsste ich dann wohl den Standardwert mit übergeben.
Meiner Meinung nach würde es in PB auch Sinn machen wenn man in so einem Fall gar nichts zwischen die Kommas schreiben muss beim Aufruf. Vielleicht wirds ja noch implementiert.
Ich denke dann lass ich das so.
@ts
Meine Funktion hat diesen Kopf:
Code: Alles auswählen
Procedure ChkCreated(*Handle.i, Type$, Action$ = "create", Addition$ = "")
Meiner Meinung nach würde es in PB auch Sinn machen wenn man in so einem Fall gar nichts zwischen die Kommas schreiben muss beim Aufruf. Vielleicht wirds ja noch implementiert.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Escape-Sequenzen können zwar nützlich sein, aber meistens nerven sie nur, deshalb sind die auch
nicht eingebaut. Ich kenne andere Sprachen, da muss ich jeden Pfad mit 2 Backslashes angeben,
das ist sowas von
Ein Pointer hat keinen nativen Type, also niemals *Handle.i, sondern immer ohne .i, .w usw.
Ausnahme sind Strukturen, *Handle.integer damit man dann so: *Handle\i drauf zugreifen kann.
Aber trotz allem, Pointer haben keinen nativen Typ. Der Typ ist Pointer!
nicht eingebaut. Ich kenne andere Sprachen, da muss ich jeden Pfad mit 2 Backslashes angeben,
das ist sowas von

Code: Alles auswählen
Procedure ChkCreated(*Handle, Type$, Action$ = "create", Addition$ = "")
If Not Action$ : Action$ = "create" : EndIf
EndProcedure
Ausnahme sind Strukturen, *Handle.integer damit man dann so: *Handle\i drauf zugreifen kann.
Aber trotz allem, Pointer haben keinen nativen Typ. Der Typ ist Pointer!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Alles klar... werde den Integer von den Pointern entfernen...
- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Ich meine, hier irgendwo gelesen zu haben, dass die Pointer immer Integer als Typ haben (mal abgesehen vom Deftype, der standardmässig Integer ist)ts-soft hat geschrieben:Ein Pointer hat keinen nativen Type, also niemals *Handle.i, sondern immer ohne .i, .w usw.
EDIT:
Ach ja, hier wars: http://www.purebasic.fr/german/viewtopi ... 04#p282104
Hast sogar du geschrieben
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Pointer sind Pointer! Integer sind immer so gross, das er einen Pointer aufnehmen kann!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Ok, und wie siehts aus, wenn ich eine C-DLL Wrappen/Prototypen will?ts-soft hat geschrieben:Pointer sind Pointer! Integer sind immer so gross, das er einen Pointer aufnehmen kann!
Werde ich für Prototype.s pRtlIpv6StringToAddress (*Addr.in6_addr, *S.s) (MSDN) gesteinigt, oder ist das erlaubt? (von Compilersiete ist's natürlich erlaubt!)
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Prozedur mit 2 optionalen Parametern. Platzhalter bei Au
Das erste ist eine strukture, also okay, aber das *S.s ist schwachfug, zumindest in PB.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
