Hallo Zusammen,
ich versuche heute schon seit mehreren Stunden mit der find Funktion eine CSV Liste zu parsen. Dabei treibt mich der Pos1 Parameter der Funktion in den Wahnsinn.



find (String1, String2, Pos1)
Die Beschreibung dazu ist auch nicht wirklich hilfreich:
Pos1: Die ersten Pos1 - Vorkommen der zu findenden Zeichenkette ignorieren
Meine Liste (bzw. der Buffer) sieht beispielsweise wie folgt aus:
337;281;267;694;60;441;450;18;-13;750;200;0;
Ich möchte nun jeden einzelnen Wert dieser Liste einer speziellen Variablen zuweisen. Hier einmal der Code für die ersten beiden Werte der CSV Liste:
[highlight=epc]
if change(Buffer) then \\
/* Parsen des 1. Wertes */; \\
StartPos=0u16; \\
EndPos=find(Buffer,$;$,0u16)-1u16; \\
Wert1=split(Buffer,StartPos,EndPos); \\
/* Parsen des 2. Wertes */; \\
StartPos=EndPos+2u16; \\
EndPos=find(Buffer,$;$,StartPos); \\
Wert2=split(Buffer,StartPos,EndPos); \\
endif
[/highlight]
Das Ergebnis für den 1.Wert ist erwartungsgemäß 337.
Das Ergebnis für den 2.Wert ist jedoch 281;267;694;
Parallel zu der o.g. Programmierung habe ich einmal mit einem Beispiel versucht den Pos 1 Parameter der find Funktion zu verstehen.
Liste=$0123456789abcdefghijklmnopqrstuvwxyz$
Start1=find(Liste,$abc$,0u16)+size($abc$)
Ende1=find(Liste,$f$,0u16)
Wert1=split(Liste,Start1,Ende1)
-> Wert1 = abcdef
-> find Funktion liefert das erwartete Ergebnis
Start2=find(Liste,$abc$,0u16)
Ende2=find(Liste,$o$,0u16)
Wert2=split(Liste,Start2,Ende2)
-> Wert2 = abcdefghijklmno
-> find Funktion liefert das erwartete Ergebnis
Start3=find(Liste,$abc$,0u16)
Ende3=find(Liste,$o$,2u16)
Wert3=split(Liste,Start3,Ende3)
-> Wert3 = abcdefghijklmnopqrstuvwxyz
-> Ergebnis ist für mich nicht nachvollziehbar
Start4=find(Liste,$abc$,0u16)
Ende4=find(Liste,$o$,4u16)
Wert4=split(Liste,Start4,Ende4)
-> Wert4 = abcdefghijklmnopqrstuvwxyz
-> Ergebnis ist für mich nicht nachvollziehbar
Start5=find(Liste,$abc$,0u16)+size($abc$)
Ende5=find(Liste,$f$,0u16)
Wert5=split(Liste,Start5,Ende5)
-> Wert4 = def
-> find Funktion liefert das erwartete Ergebnis
Wo liegt hier der Hase im Pfeffer?
Viele Grüße
Michael
ich versuche heute schon seit mehreren Stunden mit der find Funktion eine CSV Liste zu parsen. Dabei treibt mich der Pos1 Parameter der Funktion in den Wahnsinn.



find (String1, String2, Pos1)
Die Beschreibung dazu ist auch nicht wirklich hilfreich:
Pos1: Die ersten Pos1 - Vorkommen der zu findenden Zeichenkette ignorieren
Meine Liste (bzw. der Buffer) sieht beispielsweise wie folgt aus:
337;281;267;694;60;441;450;18;-13;750;200;0;
Ich möchte nun jeden einzelnen Wert dieser Liste einer speziellen Variablen zuweisen. Hier einmal der Code für die ersten beiden Werte der CSV Liste:
[highlight=epc]
if change(Buffer) then \\
/* Parsen des 1. Wertes */; \\
StartPos=0u16; \\
EndPos=find(Buffer,$;$,0u16)-1u16; \\
Wert1=split(Buffer,StartPos,EndPos); \\
/* Parsen des 2. Wertes */; \\
StartPos=EndPos+2u16; \\
EndPos=find(Buffer,$;$,StartPos); \\
Wert2=split(Buffer,StartPos,EndPos); \\
endif
[/highlight]
Das Ergebnis für den 1.Wert ist erwartungsgemäß 337.
Das Ergebnis für den 2.Wert ist jedoch 281;267;694;
Parallel zu der o.g. Programmierung habe ich einmal mit einem Beispiel versucht den Pos 1 Parameter der find Funktion zu verstehen.
Liste=$0123456789abcdefghijklmnopqrstuvwxyz$
Start1=find(Liste,$abc$,0u16)+size($abc$)
Ende1=find(Liste,$f$,0u16)
Wert1=split(Liste,Start1,Ende1)
-> Wert1 = abcdef
-> find Funktion liefert das erwartete Ergebnis
Start2=find(Liste,$abc$,0u16)
Ende2=find(Liste,$o$,0u16)
Wert2=split(Liste,Start2,Ende2)
-> Wert2 = abcdefghijklmno
-> find Funktion liefert das erwartete Ergebnis
Start3=find(Liste,$abc$,0u16)
Ende3=find(Liste,$o$,2u16)
Wert3=split(Liste,Start3,Ende3)
-> Wert3 = abcdefghijklmnopqrstuvwxyz
-> Ergebnis ist für mich nicht nachvollziehbar
Start4=find(Liste,$abc$,0u16)
Ende4=find(Liste,$o$,4u16)
Wert4=split(Liste,Start4,Ende4)
-> Wert4 = abcdefghijklmnopqrstuvwxyz
-> Ergebnis ist für mich nicht nachvollziehbar
Start5=find(Liste,$abc$,0u16)+size($abc$)
Ende5=find(Liste,$f$,0u16)
Wert5=split(Liste,Start5,Ende5)
-> Wert4 = def
-> find Funktion liefert das erwartete Ergebnis
Wo liegt hier der Hase im Pfeffer?
Viele Grüße
Michael
Kommentar