Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zahlwerte und nicht buchstaben

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
19.11.2003, 11:35 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


Kann mir jemand helfen??

Also folgendes Problem. Program soll aufpassen das der user eine zahl eingibt und wenn der user doch mal einen Buchstaben eingibt soll eine Fehlermeldung erscheinen( oder sonstiges ).

ungefähr so:

C++:
if(a_betrag->Text!=?(zahl) || a_betrag->Text!=?(zahl))
                {
                Meldung!!!
                }


--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.11.2003, 12:28 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ohne das jetzt zu testen...
das hier könnte dir helfen

C++:
bool isNumber(char* zahl){
    char flag=0,*p=zahl;
    if(!*p) return false;
    if(*p=='-'||*p=='+')++p;
    for(;*p;++p)
        if(!isdigit(*p))
            if(flag || *p!='.' )return false;
            else ++flag;
    return true;
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.11.2003, 12:43 Uhr
ao

(Operator)


Muss die Reaktion sofort nach dem Eintippen des Buchstabens kommen, oder geht es auch, dass die Eingabe zuerst mal akzeptiert und dann als Ganzes geprüft wird, also so: Benutzer tippt:

Code:
247u983<return>


Meldung erscheint nach Drücken von Return.

Falls das geht, könntest du mit gets oder besser fgets die Eingabe einlesen und dann mit strtol / strtoul / strtod eine Konvertierung versuchen. Bei ungültigen Zeichen schlägt diese fehl.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.11.2003, 12:57 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


und wie sieht das aus wenn ich das nicht in der Konsole mache sonder n die Zahl in ein Textfeld steht(Edit-Feld).

P.S. Ich weiß das, TEdit hier in einer in dem Teil des Forums nichts zu suchen hat und auch nicht zu C/C++ gehört aber als ich den Post rein gesetzt habe war es schon zu spät.
--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.11.2003, 13:09 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


na es muss doch irgendwie ne message geben die aufgerufen wird wenn sich der inhalt deines Textfeldes ändert.
wenn das der fall ist holst du dir den inhalt aus dem textfeld guckst nach ob valide zeichen eingebenen wurden (entweder mit den von ao vorgeschlagenen string mehtoden oder mit dem was ich dir gepostet hab).
Wenns nicht valide ist kannst du das letzte zeichen einfach löschen oder du setzt gleich das ganze textfeld auf leer
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.11.2003, 13:28 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


Das ist ein Wert den ich da eingebe um etwas zu berechnen also müsste er sobald ich die Rechnung starte,und in diesem Feld steht ein Buchstabe, das Feld löschen(den Inhalt).
gibt es da nichts so vielleicht das ich schreiben kann:


C++:
if(Edit->Text=numerisch)
//oder
if(Edit->Text=nicht numerisch)



weil das würde mir dann ne Menge Arbeit ersparren

Und wie jeder weiss sind Programmierer schreib-faul.
--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.11.2003, 14:18 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich weiss ja nicht was genau dir Edit->Text zurückliefert. wenns ein char* ist dann kanns du machen,wenn nicht musst du halt nen char* draus machen

C++:
if(isNumber(Edit->Text)//  rechnen
else Edit->Text="";


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.11.2003, 14:59 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


Das Edit-Feld dient nur zur Eingabe von Werten. zurückliefern tut es mir glaub ich nichts. Ich denke mal.
und das mit dem was du mir zum schluss geschrieben hast gibt es nicht.
es bgibt IsNumeric.
aber da bringt er mir ne Fehlermeldung das es eine undefinierte Variable ist.
--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.11.2003, 15:04 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das isNumber ist die funktion die ich in Post001 geschrieben habe

das edit-feld soll auch nichts zurückliefern sondern auf ein ereignis reagieren.
das ereignis das du brauchst ist wenn der inhalt des Feldes sich ändert. Es gibt doch auch bestimmt ein ereignis dafür wenn du auf nen button klickst oder nicht?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.11.2003, 15:18 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


Ok ich werd mal schauen ob es funzt.
--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: