PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB6]


Heutige Beiträge
2005-03-01, 14:57:44
Habe hier nen Stringvariable in Visual Basic 6. Diese soll transferierte Daten darstellen, die nun geprüft werden.
Dieser sieht zb so aus:

"0000"
oder
"9989"
oder
"9999"

also nur Zahlen und genau 4 Zeichen.
Jetzt ist mein Problem, dass ich ab und zu auch mal Strings wie folgt bekomme:

"000m0"
oder
"998`#|~"

Nun, mein Problem ist nicht wie die zustande kommen (das passt schon so;)), nur möchte ich gerne die oberen durchlassen und die unteren nicht.

hatte da jetzt ne Abfrage drinnen:
Select Case NTrcdata
Case "0000" To "9999"
txt.Text="ja"

Case Else
txt.Text="nein"
End Select

Diese scheint das allerdings nicht abzufangen, vorallem von der Länge her nicht.

Oboel
2005-03-01, 15:16:23
Die ACSII-Sortierung dieser Strings ist folgendermaßen:

"0000"
"000m0"
"9989"
"998`#|~"
"9999"

Womit klar ist, warum alle deine Zeichenketten innerhalb von "0000" und "9999" liegen. Das ist ja auch richtig so. Sonst würde in einem Telefonbuch ja Auerbacher nach Benk kommen, nur weil es länger ist.

Du musst also die Länge prüfen:

If Len(NTrcdata) = 4 Then
txt.Text = "ja"
Else
txt.Text = "nein"
End If
Solltest du fehlerhafte Zeichenketten mit der Lände 4 haben wird das Ganze etwas schwieriger. Die Funktion Val hilft da auch nicht viel weiter, weil Val("000m0") ebenso wie Val("0000") 0 ist. Aber du könntest über die Funktion CInt prüfen, ob der Fehler 13 ("Typen unverträglich") auftritt und diesen abfangen. Oder du könntest eine Prüfung für jede einzelne Stelle deiner Zeichenkette implementieren, oder...

Naja. Das sind mal ein paar Denkanstöße. ;)

Kinman
2005-03-01, 16:21:16
und mit der isNumeric Funktion kannst Du überprüfen ob dein String nur aus Zahlen besteht.

mfg Kinman