Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Zeichenkette aufsplitten Kategorie: Programmierung C (von Wolfgang - 13.09.2008 22:49)
Als Antwort auf Re: Zeichenkette aufsplitten von Stephan - 26.05.2008 16:22

> Hallo zusammen,
>
> ich stehe im Moment genau vor einer ähnlichen Aufgabenstellung. Ich möchte einen
> seriell eingelesenen String (kommt von einer Messeinheit im 60 Sekunden-Takt mit Semikolon
> als Trennzeichen) zwischen einzelnen Werten aufteilen und zwecks Weiterverarbeitung im
> Programm in Variablen speichern.
>
>
> Wäre toll, wenn es hier schon eine Lösung gibt. Ich komme im Moment mit der Doku nicht weiter.
>
> Viele Grüsse
> aus Hessen
> Stephan


Hallo,

hier ein paar Prozeduren, die ich für so etwas geschrieben habe:
Die Sub GetValWord liest die erste Zahl aus dem String
und löscht den ersten Teil des Strings bis zum Ende der Zahl.
Durch wiederholtes Auslesen kann man so alle Zahlen schrittweise herausholen.

Hop it helps!
Wolfgang

Sub Str_Delete (ByRef Strg As Char, Pos As Word, I As Word)
  'Deletes in Strg at Pos I Chars
  Dim n As Byte
  n = Str_Len (Strg)
  Do While Pos+I <= n
     Strg (Pos) = Strg (Pos +I)
     Pos = Pos +1
     End While
End Sub


Sub GetValWord (ByRef InpStrg As Char) As Word
  'Gets the first WordVal from a string And removes it
  Dim val As Word
  Dim i, n As Byte
  Dim c As Char
  val = 0
  n = Str_Len (InpStrg)         ' String-Funktionen funktionieren nicht in log Ausdrücken!
  i = 0

  'zuerst Anfang der Zahl suchen
  c =        InpStrg(i)         ' String-Funktionen funktionieren nicht in log Ausdrücken!
  Lab SuchLabel
  Do While ((c>&H39) Or (c<&H30)) And (i     i=i+1
    c=InpStrg(i)
    End While

  'Jetzt Ende der Zahl suchen
  Do While (c<=&H39) And (c>=&H30) And (i          val = 10*val +InpStrg(i)-&H30
         i=i+1
         c=InpStrg(i)
         End While
  Str_Delete (InpStrg, 0, i)
  Return val
End Sub


    Antwort schreiben


Antworten:

Re: Zeichenkette aufsplitten (von markus - 9.02.2009 22:56)