Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: Comma Seperated String zu Array

  1. #1
    Registriert seit
    22.03.2013
    Beiträge
    32
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    wie bekomme ich es hin einen String mit Komma Separierung in ein Array zu schreiben?

    Ausgangswert:

    '08.26.2013,10.17.10, 0.0000, KLTR/HR$R'

    Zielvorstellung:
    array[1] => 08.26.2013
    array[2] => 10.17.10
    .
    .
    .

    Vielen Dank!

    Dennis
    Zitieren Zitieren Comma Seperated String zu Array  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Es gibt die String-Funktionen.
    Damit kannst du nach dem Komma suchen (FIND), dann links davon den String kopieren (LEFT) und in dein Array schreiben.
    Dann alles links vom Komma + Komma löschen (Delete).
    Nun wieder nach dem Komma suchen usw. bis der String leer ist, bzw. die Suche kein Ergebnis liefert und der String eine bestimmte Länge unterschreitet.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    mv08 ist offline Benutzer
    Themenstarter
    Registriert seit
    22.03.2013
    Beiträge
    32
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke Ralle,

    hast du nicht schon etwas fertiges? Ich bezweifel, dass ich - wenn überhaupt - dies in angemessener Zeit gelöst bekomme

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.263
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Nein fertig habe ich nichts (Zumindest für Codesys nicht), aber das ist wirklich sehr einfach. Schau dir mal die Hilfe zu den genannten Stringfunktionen an.
    Das ist auch ein klarer Fall für ST, gerade die Stringfuntionen sind da am Besten aufgehoben.

    Ich hab gerade ein Siemens-Projekt offen, da hab ich so etwas zufällig auch drin, gelöst in SCL, also ähnlich dem Codesys-ST.
    Mit Abweichungen bei den Paramtern sollte das dann so ähnlich auch für Codesys aussehen, das Array als "Empfänger" der Daten fehlt bei mit natürlich, da sind das Outputs.
    Bei mir war der Inhalt des Files fest (Anzahl der Einträge), wenn das bei dir variabel oder sehr umfangreich ist, bietet sich zusammen mit deinem Array auch eine Schleife an.

    Code:
    FUNCTION_BLOCK FB7
    
    Title = 'Auftrag'
    //
    // Auftragstrennung
    // Zerlegung des Auftragsfiles vom PB2O
    // in seine einzelnen Bestandteile
    // Im File trennt ';' die 
    // einzelnen Positionen voneinander
    // 
    Version : '1.0'
    author  : Ralle
    name    : AUFTRAG
    family  : SYSTEM
    
    VAR_INPUT
      // Eingangsparameter
      Auftrag: STRING[200];
    END_VAR
    
    VAR_OUTPUT // Ausgangsparameter
      Car_id_No: STRING[7];
      Kind_of_production: STRING[4];
      IO_Flag: STRING[2];
      Sachnummer: STRING[10];
      OPS_Kennung: STRING[3];
      Auftrag_Order_No: STRING[8];
      Part_Number_1: STRING[8];
      Part_Number_2: STRING[8];
      Part_Number_3: STRING[8];
      Part_Number_4: STRING[8];
      Part_Number_5: STRING[8];
      Part_Number_6: STRING[8];
      Part_Number_7: STRING[8];
      Part_Number_8: STRING[8];
    
    END_VAR
    
    VAR_TEMP
        // temporäre Variablen
      Pos: INT;
      SuchString: STRING;
      Length: INT;
    END_VAR
    
    // Anweisungsteil
    SuchString := ';';
    Length := 0;
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Car_id_No :=            MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Kind_of_production :=   MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    IO_Flag :=              MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Sachnummer :=       MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    OPS_Kennung :=     MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Auftrag_Order_No := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Part_Number_1 := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Part_Number_2 := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Part_Number_3 := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Part_Number_4 := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Part_Number_5 := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Part_Number_6 := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Part_Number_7 := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    Pos :=                  FIND(IN1 := Auftrag, IN2 := SuchString);
    Part_Number_8 := MID(IN := Auftrag ,L := Pos-1 ,P := 1);
    Auftrag :=          DELETE(IN := Auftrag, L := Pos + Length, P := 1);
    
    ;
    END_FUNCTION_BLOCK
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  5. #5
    mv08 ist offline Benutzer
    Themenstarter
    Registriert seit
    22.03.2013
    Beiträge
    32
    Danke
    6
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke, dann werde ich mir mal was "basteln"

  6. #6
    Registriert seit
    24.02.2009
    Beiträge
    1.244
    Danke
    23
    Erhielt 276 Danke für 235 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Es gibt auch noch die Möglichkeit mit einem Pointer durch den ganzen String durchzuwandern und die Kommas zu suchen. Dann kann man mit MID den Teilstring zw. 2 Kommas rauskopieren. Man spart sich halt die Löscherei und muss den String nur einmal durchsuchen.

Ähnliche Themen

  1. String in Array
    Von bige im Forum CODESYS und IEC61131
    Antworten: 17
    Letzter Beitrag: 02.07.2014, 18:26
  2. Array to String, Header
    Von Limette im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 15.05.2012, 16:01
  3. String zu Array umwandeln
    Von Limette im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.04.2012, 14:27
  4. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  5. String array in SQL
    Von dannyli im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 30.05.2009, 02:54

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •