Vorschlag zu Mid()

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Vorschlag zu Mid()

Beitrag von al90 »

Der parameter Length ist immernoch nicht optional.
Ich schlage deshalb vor, dies in einer der nächsten versionen
nachzuholen, da dies eben normalerweise standard ist.
Was sagt Ihr dazu?
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

Beitrag von FloHimself »

Wieso sollte dieser denn optional sein?
Benutzeravatar
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

Beitrag von ts-soft »

Und was soll dann passieren, nur ein Zeichen? Weil
alle Zeichen wäre blödsinn, dafür gibts ja Right()
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.
Bild
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 »

Ja, ich finde das mit dem optionalen Parameter auch eine gute Idee. Es ist
nämlich nicht das selbe wie [c]Right()[/c]. So sollte es praktisch
funktionieren.

Code: Alles auswählen

Procedure.s MidU(a.s, b.l, c.l = -1)
  If c = -1
    ProcedureReturn Mid(a, b, Len(a) - b + 1)
  Else
    ProcedureReturn Mid(a, b, c)
  EndIf
EndProcedure

String.s = "Hallo du da"

Debug MidU(String, 4, 3)
Debug MidU(String, 4)
Hat noch jemand eine Idee, wie man das ganze auch als Makro
realisieren könnte? Ich habs nicht geschafft. Hab mir aber auch nicht viel
Zeit dafür genommen.
Benutzeravatar
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

Beitrag von ts-soft »

Nur die Zählung ist von der anderen Seite:

Code: Alles auswählen

Procedure.s MidU(a.s, b.l, c.l = -1)
  If c = -1
    ProcedureReturn Mid(a, b, Len(a) - b + 1)
  Else
    ProcedureReturn Mid(a, b, c)
  EndIf
EndProcedure

String.s = "Hallo du da"

Debug MidU(String, 4)
Debug Right(String, 8)
Ich wüßte nicht, wann ich es so rum vorteilhaft einsetzen könnte?
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.
Bild
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

Beitrag von FloHimself »

NicTheQuick hat geschrieben:Hat noch jemand eine Idee, wie man das ganze auch als Makro realisieren könnte? Ich habs nicht geschafft. Hab mir aber auch nicht viel Zeit dafür genommen.
Mhhh.. es gibt kein "MacroIf" oder? /:->
Benutzeravatar
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

Beitrag von ts-soft »

Code: Alles auswählen

Macro MidU(a,b)
  Mid(a, b, Len(a) - b + 1)
EndMacro

String.s = "Hallo du da"

Debug MidU(String, 4) 
PB4 rulez

If geht schon, aber die Kombination, wie von Nick gepostet, wird wohl
nicht gehen. Ich denke das MidU makro sollte es aber auch tun
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.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

ts-soft hat geschrieben:Und was soll dann passieren, nur ein Zeichen? Weil
alle Zeichen wäre blödsinn
, dafür gibts ja Right()
Nein das ist kein blödsinn. Seit den seligen C64 zeiten ist das so.
C64, Amiga (BB2, AmosPro) etc. Warum PB da so eigensinnig ist
habe ich bis heute noch nicht verstanden. Ein argument wie "Dafür gibts
Right()" ist nicht sinn der sache. Bei Right() muss ich nähmlich von hinten
anfangen zu zählen und bei Mid() von vorne. Manchmal (je nach programmierung)
setzt man dazu eine variable ein. Es ist halt blöd wenn man dann umrechnen
muss, nur um mit Right() von hinten beginnen zu müssen/können.
Ausserdem war ich (und sicherlich auch viele andere) schon
oft genug in der situation das man einen optionalen parameter brauchte.
Benutzeravatar
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

Beitrag von ts-soft »

Kannst doch jetzt das Macro nehmen, oder hol die Brotkiste wieder raus :lol:
Zuletzt geändert von ts-soft am 08.02.2006 02:38, insgesamt 1-mal geändert.
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.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

ts-soft hat geschrieben:[...] oder hol die Brotkiste wieder raus :lol:
Aber ich habe doch gar keinen Hunger. :mrgreen: :lol:
Gesperrt