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

Ergebnis 1 bis 7 von 7

Thema: einzelne CHAR aus String lesen in ST

  1. #1
    Registriert seit
    04.01.2008
    Ort
    Wien
    Beiträge
    773
    Danke
    136
    Erhielt 39 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, wie kann man in ST einzelne Zeichen aus einem STring bearbeiten.
    Meine Vermutung Str1[x] := Str2[y]; ist leider nicht machbar
    irgendetwas ist ja immer...
    ING. Gerald Miedler
    Zitieren Zitieren einzelne CHAR aus String lesen in ST  

  2. #2
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.298
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Meinst du REPLACE?
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  3. #3
    Gerri ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.01.2008
    Ort
    Wien
    Beiträge
    773
    Danke
    136
    Erhielt 39 Danke für 35 Beiträge

    Standard

    geht das auch ohne den LIB´s?
    irgendetwas ist ja immer...
    ING. Gerald Miedler

  4. #4
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.298
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Ne der ist in der Standard.lib.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  5. #5
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard

    Zitat Zitat von Gerri Beitrag anzeigen
    geht das auch ohne den LIB´s?
    Kann Deine Steuerung mit Pointern umgehen (also z.B. CoDeSys basierend?)

    Ich kann Dir in Anlehnung an Dein Beispiel aus dem ersten Beitrag mal eine Beispiellösung mit Pointern posten.

    Eins vorne Weg ich würde es mit der Standard.lib lösen und bin nicht von der folgenden überzeugt. Es geht mir lediglich darum aufzuzeigen wie es mit Pointern funktionieren könnte:

    Code:
    PROGRAM PLC_PRG
    VAR
        myString1 : STRING := '123456789';
        myString2 : STRING := '123456789';
    
        myByteArray1 : ARRAY[0..255] OF BYTE;
        myByteArray2 : ARRAY[0..255] OF BYTE;
    
        ptString    : POINTER TO STRING;
        ptByteArray : POINTER TO ARRAY[0..255] OF BYTE;
    
        x : INT := 3;
        y : INT := 4;
    
    END_VAR
    Code:
    (* String 1 in Bytearray umwandeln *)
    ptString := ADR(myString1);
    ptByteArray := ptString;
    myByteArray1 := ptByteArray^;
    
    (* String 2 in Bytearray umwandeln *)
    ptString := ADR(myString2);
    ptByteArray := ptString;
    myByteArray2 := ptByteArray^;
    
    
    (* Einzellnes Zeichen Umkopieren *)
    myByteArray1[x] := myByteArray2[y];
    
    
    (* Bytearray wieder in den String zurück wandeln *)
    ptByteArray := ADR(myByteArray1);
    ptString := ptByteArray;
    myString1 := ptString^;
    If you open your Mind too much, your Brain will fall out.

  6. #6
    Registriert seit
    17.10.2007
    Ort
    35043 Marburg
    Beiträge
    176
    Danke
    4
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Hallo,

    zu dem Beispiel von Zotos hab ich eine Anmerkung:
    In CoDeSys (V3) erzeugt die Deklaration
    Code:
    VAR
       myString1:STRING;
    END_VAR
    einen String mit einer Länge von 80 Zeichen.
    Richtig für Zotos Beispiel wäre dem zu Folge
    Code:
    VAR
       myString:STRING(255);
       ptString:POINTER TO STRING(255);
    END_VAR
    Zu deiner Frage:
    Hallo, wie kann man in ST einzelne Zeichen aus einem STring bearbeiten.
    würde ich dir schon zu den Standard STRING Funktionen raten, aber auch mit Pointern kann man das sehr elegant lösen. Dann aber vorzugsweise mit zwei Pointern, welche jeweils auf ein Byte (Char) zeigen. z.Bsp.:
    Code:
    VAR
       myString1:STRING:='Hello';
       myString2:STRING:='a';
       ptby1,ptby2:POINTER TO BYTE;
    END_VAR
    Code:
    ptby1:=ADR(myString1); (*Pointer zeigt auf den 1. character von myString1*)
    ptby2:=ADR(myString2); (*Pointer zeigt auf den 1. character von myString2*)
    ptby1[1]:=ptby2[0];(*in myString1 steht jetzt 'Hallo'*)
    Das gilt aber nur für CoDeSys V3, bei V2.3 musst du den Pointer erst hoch zählen und dann immer mit ptby1^ auflösen.
    Grüße...
    Paradox ist, wenn sich jemand im Handumdrehen den Fuß bricht.

  7. #7
    Registriert seit
    07.03.2004
    Beiträge
    4.369
    Danke
    946
    Erhielt 1.158 Danke für 831 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Jetzt noch mal das ganze in kurz:

    Code:
    VAR
        myString1 : STRING := '123456789';
        myString2 : STRING := '123456789';
    
        ptrByteArray1 : POINTER TO ARRAY[0..79] OF BYTE;
        ptrByteArray2 : POINTER TO ARRAY[0..79] OF BYTE;
    
        x : INT := 3;
        y : INT := 4;
    
    END_VAR
    Code:
    (* Pointer laden *)
    ptrByteArray1 := ADR(myString1);
    ptrByteArray2 := ADR(myString2);
    
    
    (* Einzellnes Zeichen Umkopieren *)
    ptrByteArray1^[x] := ptrByteArray2^[y];
    If you open your Mind too much, your Brain will fall out.

Ähnliche Themen

  1. CHAR in STRING wandeln
    Von morpheuss im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.08.2011, 13:29
  2. Antworten: 25
    Letzter Beitrag: 15.06.2011, 12:14
  3. S7-1200 String in Char
    Von fritz7110 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 13.01.2011, 16:18
  4. Libnodave C# - WORD und STRING aus S7 lesen/schreiben
    Von dolo280 im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 13.01.2011, 12:04
  5. CHAR zusammenfassen zu einer String
    Von stepwin im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 24.04.2008, 16:46

Lesezeichen

Berechtigungen

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