Variablen umbenennen (IDE) | Eingabe einer Zahl prüfen

Anfängerfragen zum Programmieren mit PureBasic.
Balki
Beiträge: 3
Registriert: 17.12.2011 21:20

Variablen umbenennen (IDE) | Eingabe einer Zahl prüfen

Beitrag von Balki »

Hallo,
ich habe 2 kleine Fragen.

Bietet die PB IDE die Möglichkeit Variablen umzubenennen, so dass der neue Name im gesamten Quelltext übernommen wird?

Wie kann man prüfen, ob eine gültige Zahl per Tastatur eingegeben wurde?
Wenn man bspw. einen simplen Taschenrechner (Kommandozeile/Terminal, ohne GUI) mit folgender Anweisung hat

Code: Alles auswählen

Print("Erster Operand: ")
zahl1 = Val(Input()) 
wird bei Eingabe eines Buchstabens oder sonstiges, die Eingabe in eine 0 umgewandelt. Nun kann man ja nicht einfach prüfen, ob der Wert 0 ist, da man ja durchaus mal mit Nullen rechnen möchte. Allerdings möchte man ja auch verhindern, dass solch ein Blödsinn eingegeben wird.
Zuletzt geändert von Balki am 19.01.2014 17:45, insgesamt 1-mal geändert.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Variablen umbenennen (IDE) | Eingabe einer Zahl prüfen

Beitrag von RSBasic »

Balki hat geschrieben:Bietet die PB IDE die Möglichkeit Variablen umzubenennen, so dass der neue Name im gesamten Quelltext übernommen wird?
Leider nein. Da musst du "Suchen und Ersetzen" benutzen. Es wäre in der Tat sehr hilfreich, wenn PB wie z.B. bei Visual Studio sowas anbieten würde.
Balki hat geschrieben:Wie kann man prüfen, ob eine gültige Zahl per Tastatur eingegeben wurde?
Da musst du deine eigene Funktion schreiben oder eine der folgenden Funktionen nutzen:
http://www.purebasic.fr/german/viewtopi ... =8&t=24042
http://www.purebasic.fr/english/viewtop ... 12&t=45679
http://www.purebasic.fr/english/viewtop ... 12&t=16668
http://www.purebasic.fr/english/viewtop ... 12&t=17370
http://www.purebasic.fr/german/viewtopi ... 597#p23597
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
cbora
Beiträge: 7
Registriert: 25.08.2009 21:00

Re: Variablen umbenennen (IDE) | Eingabe einer Zahl prüfen

Beitrag von cbora »

Hallo
Umbenennen von Variablen über "Bearbeiten" - "Suchen/Ersetzen"

Eingabe überprüfen:
Den eingegebenen String in einen numerische Variable umwandeln mit val() ...
dabei Kommastellen und Leerstellen beachten
Dann den numerischen Wert zurück in einen String wandeln und mit der Eingabe vergleichen .
PB5.20 Beta 10 / Ubuntu
Balki
Beiträge: 3
Registriert: 17.12.2011 21:20

Re: Variablen umbenennen (IDE) | Eingabe einer Zahl prüfen

Beitrag von Balki »

Danke für die Antworten.
Werde mir die Links mal in Ruhe anschauen.
cbora hat geschrieben:[...]
Eingabe überprüfen:
Den eingegebenen String in einen numerische Variable umwandeln mit val() ...
dabei Kommastellen und Leerstellen beachten
Dann den numerischen Wert zurück in einen String wandeln und mit der Eingabe vergleichen .
Wird dann aber nicht einfach aus der durch Val() erhaltenen 0 ein "0"? Oder wird tatsächlich der ursprüngliche String erzeugt?
bizzl
Beiträge: 82
Registriert: 08.09.2005 18:07
Computerausstattung: AMD Athlon II X4 635
Windows 7 64 Bit
Wohnort: Nordhessen - früher : Südniedersachsen

Re: Variablen umbenennen (IDE) | Eingabe einer Zahl prüfen

Beitrag von bizzl »

Wie wäre es mit einem StringGadget und gesetzem "#PB_String_Numeric"-Flag ?
Balki
Beiträge: 3
Registriert: 17.12.2011 21:20

Re: Variablen umbenennen (IDE) | Eingabe einer Zahl prüfen

Beitrag von Balki »

bizzl hat geschrieben:Wie wäre es mit einem StringGadget und gesetzem "#PB_String_Numeric"-Flag ?
Da ich Anfänger bin begnüge ich mich vorerst mit einer der anderen Lösungen.^^
Aber ich verstehe schon mal die Idee dahinter.
matbal
Beiträge: 261
Registriert: 30.03.2011 20:53

Re: Variablen umbenennen (IDE) | Eingabe einer Zahl prüfen

Beitrag von matbal »

Ich dachte mir, daß das Prüfen, ob der String eine Zahl darstellt, sich auch mit Regulären Ausdrücken lösen lassen müßte.

Hier ist mein Ergebnis:

Code: Alles auswählen

Macro IsNumeric(Text)
   MatchRegularExpression(0, Text) 
EndMacro

; Einen Regulärer Ausdruck erstellen, der darauf paßt -
; (Vorzeichen) Ziffern (Punkt Ziffern) (e (Vorzeichen) Ziffern)
CreateRegularExpression(0, "^([+-]{0,1}\d+)(\.\d+){0,1}([eE][+-]{0,1}\d+){0,1}$")


; Test
Debug IsNumeric("ABC")        ; Falsch
Debug IsNumeric("003")        ; Wahr
Debug IsNumeric("-3.5")       ; Wahr
Debug IsNumeric("+3e2")       ; Wahr
Debug IsNumeric("-3.1e+2")    ; Wahr
Debug IsNumeric("-30.40.50")  ; Falsch
Antworten