Dieser String beinhaltet 14 Istwerte, also von a beginnend bis zum 1 Komma und dann
von Komma zu Komma. Das x ist Telegramm Ende. Wäre Sau cool wenn es da jemand
gibt der mir da auf die Sprünge hilft.
MFG Matze
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
mit FIND Position des 1. Kommas suchen
Das was davor kommt ist Ergebnis 1.
Dieses wegkopieren und anschliessend mit DELETE bis zur Position des 1. Kommas löschen.
Das ganze 14 mal wiederholen, bzw. bis zum Stringende.
ca. 5 Zeilen...
Gruß Erik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
ImDeklarationsfenster:FUNCTION_BLOCKSplitterVAR_INPUTÂ Â Trig:BOOL;Â Â InpStr:STRING;Â Â Separator:STRING:=',';Â Â Reset:BOOL;END_VARVAR_OUTPUTÂ Â Q1:ARRAY[0..10]OFSTRING;END_VARVARÂ Â FeldIndex:INT:=0;Â Â (*SplitAray[0..10]:STRING;*)Â Â Temp1:STRING;Â Â DelLaenge:INT;Â Â VarExit:BOOL;Â Â ArrIsInit:BOOL;Â Â Flanke1:BOOL;Â Â Flanke2:BOOL;Â Â i:INT;END_VAR
ImProgrammfenster:
IFTrig=TRUEANDFlanke1=FALSETHENÂ (*BeiPositiverFlankeamTrig-Eingang*)
  (*Prüfen, obDatenvorhanden, Separatorangegeben, ArraynichtinitialisiertundResetnichtaktiv.*)
  IFInpStr<>''ANDSeparator<>'' ANDArrIsInit=FALSEANDReset=FALSETHEN
    Temp1 :=InpStr; (*Zeichenkette, sicherheitshalber umkopieren, befor sie manipuliert wird.*)
    WHILEVarExit=FALSEDO(*Alle<Separator-getrennteBlöckedurchlaufen*)
      DelLaenge :=FIND(Temp1,Separator); (*Die Länge, des zu bearbeitenden Zeichenketten-Abschnittes ermitteln*)
      Q1[FeldIndex] :=LEFT(Temp1, DelLaenge-LEN(Separator)); (*Sämtliche gefundene Blöcke, minus die Separatorzeichen, im Array eintragen*)
      IFDelLaenge=0ANDTemp1<>''THEN(*WennkeinSeparatormehrgefundenwird, abernochZeicheneinzutragensind*)
        Q1[FeldIndex] :=Temp1; (*Den Zeichenketten-Rest noch im Array eintragen*)
        ArrIsInit :=TRUE; (*Array-Initialisierungs-Merker setzen*)
        VarExit :=TRUE; (*Exit-Merker, zu verlassen der Suchschleife setzen*)
      END_IF
      FeldIndex :=FeldIndex+1; (*Array-Feld-Index um eins erhöhen*)
      Temp1 :=DELETE(Temp1, DelLaenge, 1); (*Beginnend mit dem ersten Zeichen, DelLaenge Zeichen löschen. Die Zeichenkette wird also kürzer*)
     END_WHILE
    Temp1 :=''; (* Sicherstellen, das Temp1, keine Zeichen mehr enthält. Ist eigentlich überflüssig, da in Zeile 4, ein eventueller Rest, überschrieben wird.*)
  END_IFEND_IFFlanke1 :=Trig; (*Flankenmerker zurücksetzen*)(*DasGanzeresetten*)IFReset=TRUEANDFlanke2=FALSETHEN(*BeiPositiverFlankeamReset-Eingang*)
  ArrIsInit :=FALSE; (*Array-Initialisierungs-Merker zurücksetzen. Wird bei erneuter Initialisierung, wieder gesetzt.*)
  VarExit :=FALSE; (*Exit-Merker, zu verlassen der Suchschleife zurücksetzen. Sonst wird die Schleife, nie durchlaufen*)
  FeldIndex :=0; (*FeldIndex zurücksetzen, damit die nächsten Eintragungen wieder bei 0 beginnen.*)
  FORi :=0TO10DO(*Array, FeldumFelddenInhaltlöschen. DasArraybleibtleererhalten*)
    Q1[i] :=''; (*Feldinhalt mit einem Leerstring überschreiben (Löschvorgang)*)
  END_FOREND_IFFlanke2 :=Reset; (*Flankenmerker zurücksetzen*)
Wichtig, ist noch, dass Du das Array gross genug dimensionierst!
Viel Spass beim ausprobieren.
Mit freundlichen Grüssen! Pitsch
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo, ich möchte gerne eine String-Variable teilen.
Sie beinhaltet Komma getrennte Werte wie das folgende Beispiel.
a1234,1234,1234,125,87,0100,0100,0100,0100,0100,0100,0100,0100,0100x
Dieser String beinhaltet 14 Istwerte, also von a beginnend bis zum 1 Komma und dann
von Komma zu Komma. Das x ist Telegramm Ende. Wäre Sau cool wenn es da jemand
gibt der mir da auf die Sprünge hilft.
MFG Matze
Moin
mit FIND Position des 1. Kommas suchen
Das was davor kommt ist Ergebnis 1.
Dieses wegkopieren und anschliessend mit DELETE bis zur Position des 1. Kommas löschen.
Das ganze 14 mal wiederholen, bzw. bis zum Stringende.
ca. 5 Zeilen...
Gruß Erik
Hallo
Ne Moglichkeit wäre so:
Wichtig, ist noch, dass Du das Array gross genug dimensionierst!
Viel Spass beim ausprobieren.
Mit freundlichen Grüssen! Pitsch