Seite 1 von 3
Daten aufteilen
Verfasst: 17.08.2008 19:22
von TobiasR
Hallo,
ich stehe mal wieder vor einem Problem.
Über die serielle Schnittstelle erhalte ich folgenden Code:
0-0-28-24-0-1-0-105
Jede Zahl kann zwischen 1 und 3 Stellen haben. Sie sind immer durch einen - getrennt.
Ich möchte nun drei Varianlen V1, V2, V3, V4, V5, V6, V7 und V8 mit dem jeweiligen Zahlenwert füllen und breche mir ganz schön einen ab.
Sicher geht das ganz einfach
Kann mir jemand helfen?
Tobias
Verfasst: 17.08.2008 19:26
von TomS
StringField()?
Code: Alles auswählen
string.s="0-0-28-24-0-1-0-105"
V1.s=StringField(string,1,"-")
V2.s=StringField(string,2,"-")
V3.s=StringField(string,3,"-")
V4.s=StringField(string,4,"-")
V5.s=StringField(string,5,"-")
V6.s=StringField(string,6,"-")
V7.s=StringField(string,7,"-")
V8.s=StringField(string,8,"-")
EDIT: Oder halt noch ein Val drumrum, wenn du damit rechnen willst
Verfasst: 17.08.2008 19:28
von TobiasR
Super, herzlichen Dank für die schnelle Antwort!
Verfasst: 17.08.2008 19:30
von Kaeru Gaman
@TomS
du hast Val() vergessen
@TobiasR
für solche Fälle würde ich dir eher ein Array als getrennte Variablen empfehlen, das ist für viele Dinge praktischer.
Zum Beispiel kannst du schon beim Aufteilen eine Schleife benutzen.
Code: Alles auswählen
Dim V(8)
string.s="0-0-28-24-0-1-0-105"
For n=1 To 8
V(n) = Val(StringField(string,n,"-"))
Debug V(n)
Next
Verfasst: 17.08.2008 19:53
von TobiasR
Hallo,
die Idee mit dem Arry ist gut und ich wollte sie auch gleis ausprobieren.
Leider hackt das Programm jetzt
Code: Alles auswählen
string.s=auswertung.s
For n=1 To 8
V(n) = Val(StringField(string,n,"-"))
Debug V(n)
Next
StringGadget(#String_11, 455, 490, 70, 25, V1)
Was mache ich da falsch?
Verfasst: 17.08.2008 19:57
von rolaf
StringGadget(#String_11, 455, 490, 70, 25, Str(V(1)))

Verfasst: 17.08.2008 19:57
von Kaeru Gaman
V1 ist weder definiert, noch ist es ein String.
mit
StringGadget(#String_11, 455, 490, 70, 25, Str(V(1)))
setzt du einen String der den Zahlenwert in V(1) darstellt ins Stringgadget.
Verfasst: 17.08.2008 20:02
von TobiasR
Super, Danke!
Verfasst: 17.08.2008 21:27
von AND51
TobiasR hat geschrieben:die Idee mit dem Arry ist gut
Na dann darf ich dir
ExtractRegularExpression() vorstellen:
Code: Alles auswählen
Dim V.s(0)
string.s="0-0-28-24-0-1-0-105"
CreateRegularExpression(0, "\d+")
anzahl=ExtractRegularExpression(0, string, V())
FreeRegularExpression(0)
For n=0 To anzahl-1
Debug V(n)
Next
Der Befehl gibt dem Array automatisch genau so viele Elemente, wie Zahlen gefunden werden, daher können wir ganz oben ruhig
Dim V.s(0) schreiben.
Verfasst: 17.08.2008 21:53
von edel
naja, hier ist regex aber overkill ...