Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

String überprüfen auf Zeichenlänge sowie Integerwert

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
studio



Anmeldungsdatum: 08.08.2005
Beiträge: 34

BeitragVerfasst am: 18.08.2005, 10:55    Titel: String überprüfen auf Zeichenlänge sowie Integerwert Antworten mit Zitat

Hallo!

Es gibt eine Stringvariable "Groesse$".

Folgende Eigenschaften sollte der Inhalt dieser Variable aufweißen:
1. Länge 3 (nicht kleiner nicht größer)
2. Nur Zahlen
3. Es sollte möglich sein 3x die 0 eingeben zu dürfen -> "000".

Bisdato hatte ich mir folgendes ausgedacht:
--
LOCATE 2,8 : INPUT "Grïsse:",Groesse$
IF LEN(Groesse$) <> 3 OR VAL(Groesse$) = 0 THEN
LOCATE 9,8 : PRINT "FEHLER"
END IF
--
Das Problem was ich hierbei habe ist, dass VAL den Stringwert in einen Integerwert
umwandelt und bei "000" ergibt dies nunmal als Integerwert 0 -> Fehler
Dem Benutzer sollte es aber gestattet sein als Größe 3x die Null einzugeben.
VAL erfüllt in diesem Zusammenhang das Abfangen von eingegebenen
Buchstaben oder Sonderzeichen.

Ich hoffe Ihr könnte mir bei meinem Problem weiterhelfen.

Vielen Dank bereits im Voraus für Eure Mühe.

Gruß
studio
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 18.08.2005, 11:27    Titel: Antworten mit Zitat

Hallo

Du könntest auch nur Zahlentasten bei der Eingabe zulassen und warten bis dreimal eine solche gedrückt wurde.

Code:
LOCATE 2, 8
PRINT "Groesse: ";
FOR x = 0 TO 2
DO
t$ = INKEY$
LOOP WHILE t$ < "0" OR t$ > "9"
PRINT t$;
groesse$ = groesse$ + t$
NEXT


Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
studio



Anmeldungsdatum: 08.08.2005
Beiträge: 34

BeitragVerfasst am: 18.08.2005, 11:33    Titel: Antworten mit Zitat

Hi Skilltronic,

vielen Dank für Deine schnelle Antwort. Gibt es nicht eine andere Möglichkeit
mein IF-Konstrukt anders aufzubauen?

Vielen Dank im Voraus.

Gruß
studio
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 18.08.2005, 11:49    Titel: Antworten mit Zitat

Überprüfe halt noch, wenn VAL(Groesse$) = 0 ist, ob 3 Nullen enthalten sind:
Code:

IF VAL(Groesse$) = 0 AND Groesse$ <> "000" THEN
 PRINT "Fehler!"
END IF


jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
studio



Anmeldungsdatum: 08.08.2005
Beiträge: 34

BeitragVerfasst am: 18.08.2005, 12:13    Titel: Antworten mit Zitat

Hallo jb,

vielen Dank für Deine Antwort ... das ist auch genau die Lösung die ich gesucht hatte.

Allerdings muss ich zu meinem Unvermögen schreiben, dass ich auf die selbe Idee bereits gekommen bin ... nur falsch angewendet bzw. an der falschen Position:
--
IF Groesse$ <> "000" AND LEN(Groesse$) <> 3 OR VAL(Groesse$) = 0 THEN
LOCATE 9,8 : PRINT "FEHLER"
END IF
--
Hier wird das AND in Verbindung mit der Länge gebracht und kann somit auch nicht funktionieren.

Vielen Dank für Eure Mühe.

Gruß
studio
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 18.08.2005, 20:53    Titel: Antworten mit Zitat

Deswegen sollte man Bedingungen immer in Klammern schreiben, damit sie nicht mit den logischen Operatoren in Konflikt treten:
Code:
IF (Bedingung1) AND (Bedingung2) OR (edingung3) THEN...


Wozu brauchst du denn eine solche Prüfung?
Klingt nach einem Berechnungsprogramm... stells doch bitte mal vor zwinkern

Have a nice day
Ciao
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
studio



Anmeldungsdatum: 08.08.2005
Beiträge: 34

BeitragVerfasst am: 19.08.2005, 09:13    Titel: Antworten mit Zitat

Morgen!

@Dusky_Joe:
Danke für den Hinweis.

@Vorstellung:
Es geht hierbei um ein Inventurprogramm für den Schuhhandel. Dieses
Programm wird sich auf einem MDE Gerät wiederfinden. Eigentlich bin ich
im QBasic Bereich falsch angesiedelt, da das BHT sein eigenes Basic
Derivat mitbringt (BHT-Basic).
"Programmers Manual" - Vertreiberfirma:
Zitat:
The syntax of BHT-BASIC is as close as possible to that used in Microsoft BASIC (MS-BASIC)


Einige Funktionen gibt es nicht und andere funktionieren ganz anders.
Daher muss ich einiges was Ihr mir an Ratschlägen mitteilt nochmals
entsprechend anpassen. Dennoch fühle ich mich hier im QBasic-Bereich
sehr wohl und werde mit Eurer Erlaubnis weitere Fragen stellen zwinkern

Gruß
studio
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz