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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 18 von 18

Thema: String in Array

  1. #11
    bige ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.07.2010
    Beiträge
    9
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Merci Ebt'ler
    so geht's! muss ich jetzt nur noch mit meiner Filterfunction verheiraten

  2. #12
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    Ok, gut

    Um den Code in solch ein Feld zu bekommen musst du ihn markieren und dann im Editor über den Textfeld auf # klicken.

  3. #13
    bige ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.07.2010
    Beiträge
    9
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    OK, bin wieder da. Dank eurer Hilfe bin ich schon fast fertig:

    Code:
    VAR
     Parameter:    STRING; (* max Anzahl (Nutz)Messwerte in Integer format,
              einschliesslich Steuerzeichen z.B: 3 Nutz)Werte
              51;111;222;333$R
              51 und $R gefiltert
              *)
     sListPulseDuration51:  STRING; (* Hilfsvar. *)
       ListDurationPulsArray :ARRAY[0..max_anzahl_werte] OF INT; (* Ausgabe Messwerte in Array *)
        i:       INT; (* Index *)
        FirstPos:     INT; (* first position of parameter *)
     LastPos:     INT; (* last position of parameter *)
     Length:     INT; (* length of parameter *)
    END_VAR
    VAR CONSTANT
        max_anzahl_werte: INT := 5; (* vorläufig 3 *)
    END_VAR
    ___________________
    (*Test 1*)
     (* string of RS232 *)
     sListPulseDuration51 := Parameter;
     FOR i:= 0 TO max_anzahl_werte DO
      (* find first position of parameter *)
      FirstPos:= FIND(sListPulseDuration51,';');
      (* find last position of parameter *)
      LastPos := FIND (sListPulseDuration51,'$R');
      (* length of parameter *)
      Length := LastPos - FirstPos;
      ListDurationPulsArray[i] := STRING_TO_INT(LEFT(sListPulseDuration51 , FirstPos -1));
      IF (FirstPos = 0) THEN
       ListDurationPulsArray[i] := STRING_TO_INT(sListPulseDuration51);
       sListPulseDuration51:='';
      END_IF
      sListPulseDuration51 := RIGHT(sListPulseDuration51 , LEN(sListPulseDuration51) - FirstPos);
     END_FOR
    (*  Eingabe: Parameter= 51;111;222;333$R
     Ergebiss: 0= 51
        1= 111
        2= 222
        3= 0
        4= 0
        5= 0
    *)
    Aktuelles ist Problem ist noch die Filterung, bitte letzten Kommentar im Code anschauen.
    Merci Gerd
    Zitieren Zitieren Status  

  4. #14
    Registriert seit
    01.09.2008
    Ort
    Berlin
    Beiträge
    172
    Danke
    51
    Erhielt 51 Danke für 44 Beiträge

    Standard

    Ich nehme mal an es geht um Index 3 des Arrays. Dort steht eine Null, da beim spliten im letzten Teilstring noch 333$R bleibt, was nicht zu Integer konvertierbar ist.
    Am einfachsten wäre es $R gleich vor der FOR- Schleife zu löschen:

    Code:
    position := FIND ( hilfs_string , '$R');
    hilfs_string := DELETE ( hilfs_string , 2 , position );
    Sollte $R mehrfach vorkommen müsste das Löschen auch in eine Schleife, dass sollte aber nach deiner Beschreibung nicht der Fall sein.

    Alternativ könnte man es auch beim spliten selbst herausfiltern. Aber ich denke so ist es am einfachsten.

  5. Folgende 2 Benutzer sagen Danke zu ebt'ler für den nützlichen Beitrag:

    bige (27.07.2010),J4CK (16.09.2010)

  6. #15
    bige ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    20.07.2010
    Beiträge
    9
    Danke
    3
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Grosses Dankeschön, alles Tiptop.
    Werde es mal Kommentiert zusammenschreiben und hier veröffentlichen, denke es ist von Allgemeinem Nutzen. Diese Variante String in Array auflösen habe ich noch nirgends gefunden.
    Gruss Gerd und merci

  7. Folgender Benutzer sagt Danke zu bige für den nützlichen Beitrag:

    J4CK (16.09.2010)

  8. #16
    Registriert seit
    24.03.2010
    Beiträge
    44
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von bige Beitrag anzeigen

    ...Wie bekommt ihr den Code in ein blau hinterlegtes Fenster?
    Über dem Fenster, in dem du schreibst, ist dieses Zeichen #
    Mit einem Klick darauf wird [ C O D E ] [ / C O D E ] eingefügt (ohne Leerzeichen).

    Zwischen ] [ schreibst du deinen Code und es erscheint in diesem blauen Fenster.

    Cheers,
    Niko

  9. #17
    Registriert seit
    23.10.2009
    Beiträge
    390
    Danke
    58
    Erhielt 112 Danke für 86 Beiträge

    Standard

    @onikos
    wie Du in Beitrag #13 lesen kannst, hat bige das schon vor fast vier Jahren gelernt.
    Gruß
    Erich

  10. #18
    Registriert seit
    21.02.2014
    Ort
    Sachsen-Anhalt
    Beiträge
    1.487
    Danke
    261
    Erhielt 243 Danke für 222 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    bin auch drauf reingefallen
    Geändert von weißnix_ (02.07.2014 um 18:29 Uhr)

Ähnliche Themen

  1. Array of Byte to String[12] ,S7
    Von sb9674 im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.09.2009, 19:15
  2. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  3. String array in SQL
    Von dannyli im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 30.05.2009, 02:54
  4. Das Array und Char/String Geheimnis...
    Von Percival im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 12.10.2007, 11:10
  5. Array als String darstellen
    Von DiplomandSPS im Forum HMI
    Antworten: 10
    Letzter Beitrag: 30.03.2004, 23:18

Stichworte

Lesezeichen

Berechtigungen

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