Internationale Überprüfung, ob Ausdruck Zahl ist

21/08/2007 - 15:38 von Patrick Denke | Report spam
Hallo Leute,

ich bekomme eine Textdatei (auf das Format habe ich keinen Einfluß, da von
einem Messgeràt), die überwiegend Zahlen, aber dazwischen auch Text
enthàlt.
Sie ist folgendermaßen aufgebaut:
0.001234566
0.000234567
text
0.0005678
usw.

Ich weiß vorher nicht, wann ich Text und wann ich eine Zahl habe. Der
Dezimaltrenner ist immer ein Punkt. Ich möchte nur die Zahlen in ein
Datenfeld vom Typ String schreiben.

Meine Schleife sieht folgendermaßen aus:

Do While Not EOF(filenum)
Input #filenum, input_string
If IsNumeric(input_string) Then
ReDim Preserve input_Array(ind)
input_Array(ind) = input_string
ind = ind + 1
End If
Loop

Nun ist die Software auf einem Windows-System mit norwegischen
Spracheinstellungen installiert. Dort ist das Dezimaltrennzeichen ein ","
(Komma), wie in Deutschland und das Tausendertrennzeichen ein Leerzeichen.
Damit erkennt IsNumeric den String nicht mehr als Zahl.
Ich Depp habe es nur mit englischen und deutschen Spracheinstellungen
probiert.
Wie interpretiere ich nun unabhàngig von den Làndereinstellungen, daß eine
Zahlenfolge mit oder ohne einem Punkt auch eine Zahl ist?

Gruß Patrick
 

Lesen sie die antworten

#1 Christian Zimmermann
21/08/2007 - 15:51 | Warnen spam
Hallo Patrick,

Patrick Denke schrieb:

ich bekomme eine Textdatei (auf das Format habe ich keinen Einfluß, da von
einem Messgeràt), die überwiegend Zahlen, aber dazwischen auch Text
enthàlt.
Sie ist folgendermaßen aufgebaut:
0.001234566
0.000234567
text
0.0005678
usw.

Ich weiß vorher nicht, wann ich Text und wann ich eine Zahl habe. Der
Dezimaltrenner ist immer ein Punkt. Ich möchte nur die Zahlen in ein
Datenfeld vom Typ String schreiben.

Meine Schleife sieht folgendermaßen aus:

Do While Not EOF(filenum)
Input #filenum, input_string
If IsNumeric(input_string) Then
ReDim Preserve input_Array(ind)
input_Array(ind) = input_string
ind = ind + 1
End If
Loop

Nun ist die Software auf einem Windows-System mit norwegischen
Spracheinstellungen installiert. Dort ist das Dezimaltrennzeichen ein ","
(Komma), wie in Deutschland und das Tausendertrennzeichen ein Leerzeichen.
Damit erkennt IsNumeric den String nicht mehr als Zahl.



IsNumeric() legt immer die spezifischen Làndereinstellungen des
vorhanden Betriebssystems zugrunde. Du bekommst immer das englische
Format, sodass du mit IsNumeric() nicht arbeiten kannst. Das hast du ja
schon festgestellt.

Wie interpretiere ich nun unabhàngig von den Làndereinstellungen, daß eine
Zahlenfolge mit oder ohne einem Punkt auch eine Zahl ist?



Was weißt du noch über die Daten? Ist es auszuschließen, dass der Text
mit einer Ziffer beginnen kann? Wenn ja, dann bràuchtest du nur jeweils
das erste Zeichen auf 0 bis 9 zu prüfen. Wird auch immer eine
Vorkommanull angegeben? Kann in einer Zeile noch Text nach einer Zahl
stehen? Dann den Wert mit Val() bearbeiten und dann wieder einem String
zuweisen.

Wenn die Werte jeweils mit einem Zeilenumbruch in die Datei geschrieben
wurden, kannst du die Datei mit Line Input ... auslesen. Damit bekommst
du dann immer eine Zeile geliefert.

Gruß

Christian

Ähnliche fragen