Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Zugriff auf einzelnes Zeichen eines Strings

Ralf
2007-02-22
2007-02-22
  • Ralf - 2007-02-22

    Hallo,

    Gibt es eine einfache Form für Zugriff auf einzelnes Zeichen eines Strings ?

    Bsp.:

    Data : STRING := 'ABC100-001';

    Wie kann ich direkt auf 4.Zeichen des Strings zugreifen ?

    Danke für Lösung !

     
  • RolandWagner

    RolandWagner - 2007-02-22

    Hallo,

    kleiner Auszug aus der CoDeSys online Hilfe für die Funktion MID:

    <<<

    MID

    Die Funktion MID (standard.lib) liefert einen Teilstring eines Strings.

    Der Eingang STR ist vom Typ STRING, LEN und POS vom Typ INT, der Rückgabewert der Funktion vom Typ STRING.

    MID (STR, LEN, POS) bedeutet: Hole LEN Zeichen aus dem String STR, beginnend mit dem Zeichen an der Stelle POS.

    Beispiel in AWL:

    LD 'SUSI'

    MID 2,2

    ST VarSTRING1 ( Ergebnis ist 'US' )

    Beispiel in FUP:

    (siehe unten)

    Beispiel in ST:

    VarSTRING1 := MID ('SUSI',2,2);

    Ich hoffe, dass hilft weiter.

    IMG: MID.gif

     
  • Samir - 2007-02-22

    right(left('ABC100-001',4),1);

    es werden die ersten 4 Zeichen gelesen(LEFT,4) und das gewollte Zeichen

    (RIGHT,1)

    Die 4 ist natürlich variable, die 1 aber nicht.

    Das gleiche tut natürlich die Funktion

    MID( 'ABC100-001' ,1,4); 1=Länge 4=Position

     
  • Ralf - 2007-02-22

    Danke für die Hilfen.

    Habe inzwischen auch eine Lösung.

    Data : STRING := 'ABC100-001';

    Charakter : STRING[1];

    LEN := 10;

    pArray : POINTER TO ARRAY[1..LEN] OF BYTE;

    pArray := ADR(Data);

    Charakter := pArray^[4];

    Aber ersichtlich, dass Lösungen über String-Funktionen einfacher.

     
  • Oberchefe - 2007-02-22

    Zitat:
    Aber ersichtlich, dass Lösungen über String-Funktionen einfacher.

    Nicht unbedingt. Wenn Du beispielsweise einen Buchstaben in einem längeren String ersetzen willst sollte die Pointer Version schneller sein.

    Abgesehen davon können die Standard String Funktionen nur mit einer bestimmten Stringlänge umgehen, ist der String länger -> Pech gehabt.

     

Log in to post a comment.