Guten Tag liebe Community,
Also ich möchte in einem Inputtext sprich in einem Dialog überprüfen, ob der Spieler bei der Eingabe eine Zahl eingegeben hat. Wenn er eine Zahl eingegeben hat, soll Irgendwas passieren (das habe ich) und wenn er keine Zahl angegeben hat, so soll ein Error-Dialog kommen. Könntet ihr mir helfen? Ich würde mich ganz herzlich bei euch bedanken.
Überprüfen ob Zahl eingegeben wurde (inputtext)
- KingFr3ak
- Geschlossen
- Erledigt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
einfach if(strval(inputtext) <= 0)return // Hier der Error dialog ^^ abfragen
-
einfach if(strval(inputtext) <= 0)return // Hier der Error dialog ^^ abfragen
Warum denn <= ? das verstehe ich nicht ... das heißt doch "kleiner oder gleich", oder ... ?
-
Warum denn <= ? das verstehe ich nicht ... das heißt doch "kleiner oder gleich", oder ... ?
Kannst auch abfragen ob es 0 ist, spielt keine Rolle, ich mache dies so aus gewohnheit, weil wenn der spieler eine Zahl eingibt wo - vor steht, kommt keine
Error Meldung -
Warum denn <= ? das verstehe ich nicht ... das heißt doch "kleiner oder gleich", oder ... ?
Eigentlich wäre == 0 sinnvoll, weil strval immer 0 zurückgibt, wenn es keine Zahl ist.Problematisch wird es allerdings, wenn die erforderliche Eingabe 0 sein soll.
Dann sollte man zusätzlich prüfen, ob das erste Zeichen nicht vielleicht 0 ist -
IsNumeric(const string[])
{
new help[512];
format(help,sizeof(help),"%d",strval(string));
if(strcmp(help, string, true, strlen(string)) != 0) return 0
return 1;
}das sollte gehen
-
Danke für eure Hilfe, habe bereits etwas gescriptet, doch bekomme Errors:
if(strval(inputtext) == 0 ||strval(inputtext) == 10||strval(inputtext) == 11||strval(inputtext) == 12)||strval(inputtext) == 13||strval(inputtext) == 14||strval(inputtext) == 15||strval(inputtext) == 35||strval(inputtext) == 36||strval(inputtext) == 37||strval(inputtext) == 38||strval(inputtext) == 44)
{
//Mein Ding ... :X
}
C:\DOKUME~1\Bafra\Desktop\Dosyalar\Muho\NEUERO~2\GAMEMO~1\script.pwn(289) : error 029: invalid expression, assumed zero
C:\DOKUME~1\Bafra\Desktop\Dosyalar\Muho\NEUERO~2\GAMEMO~1\script.pwn(289) : warning 215: expression has no effect
C:\DOKUME~1\Bafra\Desktop\Dosyalar\Muho\NEUERO~2\GAMEMO~1\script.pwn(289) : error 001: expected token: ";", but found ")"
C:\DOKUME~1\Bafra\Desktop\Dosyalar\Muho\NEUERO~2\GAMEMO~1\script.pwn(289) : error 029: invalid expression, assumed zero
C:\DOKUME~1\Bafra\Desktop\Dosyalar\Muho\NEUERO~2\GAMEMO~1\script.pwn(289) : fatal error 107: too many error messages on one lineCompilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
}
PAWN Quelltext
1
2
3
4
5
6
7
IsNumeric(const string[])
{
new help[512];
format(help,sizeof(help),"%d",strval(string));
if(strcmp(help, string, true, strlen(string) != 0) return 0
return 1;
}das sollte gehen
Und wie setzt man die ein? Also einfach IsNumeric(inputtext) ?? -
genau
IsNumeric(const string[])
{
new help[12];
format(help,sizeof(help),"%d",strval(string));
if(strcmp(help, string, true, strlen(string)) != 0) return 0
return 1;
}da warn kleiner fehler drinne
-
new help[512];
Was ist denn mit dir falsch?Zahlen haben normalerweise nur 10 Zeichen, mit minus 11 also maximal 12 (wegen 0 opperator)
Aber 512 halte ich für wahnsinnig übertrieben, vor allem wenn man bedenkt, das die normalen SA:MP Eingabemöglichkeiten auf 128 Zeichen (cells) beschränkt sind -
Und wie überprüft man dann, ob eine bestimmte Zahl eingegeben wurde z.B. 35, geht das auch über IsNumeric?
-
-
if(isNumeric(inputtext))
IsNumeric(const string[])
{
new help[11];
format(help,sizeof(help),"%d",strval(string));
if(strcmp(help, string, true, strlen(string)) != 0) return 0
return 1;
}bitte nochmal ne kleine Änderung wegen Grund siehe blackace
-
Das müsstest du dann über strval machen, anders konnst du nicht an den Zahlen Wert.
Allerdings kannst du auch vergleichen (strcmp) ob die Eingabe 35 ist.
@lovelins12:
Sicher, wenn 1 oder 0 zurück gegeben wird, das dann 35 true sein kann?
Ich glaube nicht -
Eine strval abfrage ist schneller als ein string vergleich mit strcmp und da durch IsNumeric sowieso nur zahlen erlaubt sind solltest du über strval(inputtext) die werte vergleichen
-
breadfish.de
Hat das Thema geschlossen.