Hallo
Ich habe folgendes Problem:
Ich habe einen String, der folgendermaßen aussieht:
<A><C><K><CR><1><SP><1><SP><8><7><SP><1><4><3><CR>
Jedes Zeichen in < > sind ASCII-Zeichen, darunter auch 2 nicht-druckbare
(CR und SP).
Ich will nun die Zahlen aus dem String herausfiltern und jede Zahl in
einer extra Stringvariablen abspeichern. Das Problem welches nun
hinzukommt ist, dass die Zahlen nicht fix sind, alle anderen Zeichen
jedoch schon.
Sprich, der String könnte auch so aussehen:
<A><C><K><CR><1><3><SP><4><1><SP><1><8><7><SP><4><3><CR>
Ich habe schon eine gute Weile überlegt aber eine richtig gute
Angehensweise habe ich nicht gefunden. Meine Lösung wäre, die ersten 3
Zeichen erstmal wegzuschneiden (<A><C><K><CR>) und dann für jedes
Zeichen extra eine Fallunterscheidung zu machen ob es eine Zahl ist.
Aber vielleicht weis ja einer on euch wie es einfacher geht :)
hi,
die sprache dabei ist eigentlich egal, du kannst die einzelnen strings
innerhalb der klammern mit der funktion 'val(string)' auf ihren
numerischen wert untersuchen, dann bekommst du raus, welcher einer zahl
entspricht.
grüssens, harry
Die Variable cmu_vw_array soll später die einzelnen Zahlen in einem
String speichern und sie mit einem Leerzeichen trennen.
Wenn ich mir mit dem Logic Analyzer die Print-Befehle anschaue passt das
soweit. Aber die Zuweisung
Mid(cmu_vw_array , schleifenvar , 1) = "9"
funktioniert nicht. Da bekomme ich nichts brauchbares zusammen...
Wie kann ich das umschreiben?
>Mid(cmu_vw_array , schleifenvar , 1) = "9"
kann auch nicht gehen, da MID 1 Zeichen des cmu_vw_array an der Stelle
schleifenvar zurückliefert. Es setzt keine Strings zusammen.
Das einfachste wäre so:
for i = 1 to received_char_len
if mid(received_char,i,1) >= "0" and mid(received_char,i,1) <="9"
then cmu_vw_array = cmu_vw_array + mid(received_char,i,1)
next i
Zumindest funktioniert das so oder ähnlich in verschiedenen
PC-Basic-Dialekten.
Du solltest dir die Stringverarbeitung von Bascom mal ansehen...