Zerlegung einer CSV-Zeile in SCL

nekron

Level-2
Beiträge
332
Reaktionspunkte
30
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin moin,

ich hab hier im Moment das Problem, dass ich per seriellem Interface eine Zeile geschickt bekomme und die passend zerlegen muss sowie die Zahlen in REAL-Werte wandeln muss.

X2;1,2345;2,2345;IO;3;1,95;2,055

Mein Ansatz war, immer bis zum Strichpunkt in eine Separate Variable kopieren und den Teil dann im Quellstring zu löschen, danach je nach Schritt das ganze in REAL zu wandeln.

Code:
    iLen := LEN(sIn);
        
    iPos := FIND (IN1:= sIn, IN2:= ';');
    IF prm_pos > 0 THEN
         sOut := LEFT(IN:= sIn, L:=iPos);
         sIn := RIGHT(IN:=sIn, L:=iLen - iPos);
    END_IF

dann eine Wandlung in REAL bzw. Auswertung des STRINGS ...

Geht das so oder gibt es irgendwelche Sinnvolleren/Schnelleren Wege ?
Eventuell mit Integrierter Konvertierung ?

Danke & Gruss,
michael
 
Hallo,
ich würde es in etwa so machen, wie von dir beschrieben. Einzige Modifikation :
Code:
iLen := LEN(sIn);
        
    iPos := FIND (IN1:= sIn, IN2:= ';');
    IF [B][COLOR=red]iPos[/COLOR][/B] > 0 THEN
         sOut := LEFT(IN:= sIn, L:=[COLOR=red][B]iPos-1[/B][/COLOR]);
         sIn := RIGHT(IN:=sIn, L:=iLen - iPos);
    END_IF ;
... und dann das Ganze so oft wiederholen bis iPos = 0 ist ... (dann ist kein Semikolon mehr gefunden worden).

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi ...

Ach - das prm_pos war natuerlich ein Tippfehler := aber das -1 hab ich doch tatsaechlich vergessen :)

Gut - dann bin ich ja zumindest auf dem richtigen Dampfer :)

Gruss
Michael
 
Wenn ipos das erste Mal Null ist, ist der letzte Wert (im Beispiel 2,055) noch im String sIn, wird aber nicht an sOut übergeben!

Gruß
Koslovski
 
OK ... dann sollte man das noch mit einem ELSE unter Berücksichtigung der (Rest-)Stringlänge würzen ...

Gruß
Larry
 
Zurück
Oben