String in Numerischen Wert [Doofe Frage]

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Joel
Beiträge: 851
Registriert: 21.04.2006 19:22

String in Numerischen Wert [Doofe Frage]

Beitrag von Joel »

Hallo,

Bitte nicht auslachen aber ich bekomme folgendes nicht hin:

Ich habe einen String in dem die Zahl "01" ist. Wie schaffe ich es zu dem String$ eine Zahl zu Addieren also dass da dann 02 raus kommt.

Leider kommt bei dem Code unten 011 raus, statt 02


Code: Alles auswählen

  String$="01"
String$+"1"
Debug String$
----------------------------------------------------------

PB 5.20 Beta 10 | Windows 7
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Code: Alles auswählen

string$="01"
zahl=Val(string$)
zahl=zahl+1
string$=Str(zahl)

If Len(string$)=1
    string$="0"+string$
Endif

Debug string$
Also zur Erklärung: In PureBasic wird zwischen Numerischen Variablen und Strings unterschieden (anders als bspw in PHP). D.h. vor dem Rechnen muss der String mit Val() in eine Zahl umgewandelt werden. Danach die Rechenoperationen ausführen und anschließend die Zahl mit Str() wieder ein einen String zur Ausgabe umwandeln.
Die If-Bedingung stellt eine 0 voran, wenn der String zu kurz ist.
Zuletzt geändert von TomS am 20.07.2008 21:13, insgesamt 2-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

du musst das "Zahlwort" erst in eine echte Zahl umwandeln, und dann wieder zurück:

Code: Alles auswählen

String$ = "01" 
String$ = Str(Val(String$)+1) 
Debug String$ 
Str() wandelt Zahl in String um
Val() wandelt String in Zahl um
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
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 »

Das Beispiel von TomS mit RSet

Code: Alles auswählen

string$="01"
zahl=Val(string$)
zahl=zahl + 1
string$=RSet(Str(zahl), 2, "0")

Debug string$
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
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

@ TomS: Für das Voranstellen einer 0 oder eines anderen Zeichens kann man auch die Funktion RSet() verwenden:

Code: Alles auswählen

old$ = "7"
new$ = RSet(old$, 3, "0")
-> new$ = "007"
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
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 »

@ZeHa

ca. 1 Minute schneller :mrgreen:
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
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

Ich bin halt ein gemütlicherer Mensch als Du :mrgreen:
Bild     Bild

ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Das kommt davon, wenn man die Hilfe nur anschaut, wenn man sich anders nicht helfen kann :roll:
Danke für den Tipp
Antworten