TIA String aufteilen in TIA

anilo14

Level-1
Beiträge
38
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallöle,

ich habe vor in einem SPS Programm ein String, der Semikolon ( ; ) also Trennzeichen beinhaltet, in einzelne Variable mit den Datentyp String zu schreiben.

Folgendes habe ich überlegt und programmiert:

- über den "FIND" die Stelle des Semikolon feststellen
- dann über "MID" bis zu dieser Stelle auslesen und speichern
- als letztes soll das gelesene Teil über DELETE gelöscht werden

"FIND" und "MID" funktionieren auch so weit, so gut (Anhang: BILD 1). Nur wenn ich DELETE aufrufe, macht mal Programm nicht das, was ich mir vorstelle (Anhang: BILD 2).

Ich konnte das Problem bedingt lösen, indem ich das gelöschte Teil in eine neue Variable gespeichert habe (Anhang: BILD 3). Jedoch finde ich diesen Lösungansatz nicht so toll, weil das Ganze für den kompletten String wiederholen möchte und somit also immer eine neue Variable erstellen muss.

Kann mir jemand vielleicht einen Tipp geben, wie ich es eleganter realisieren kann?


Grüße

anilo14
BILD 1.jpgBILD 2.jpgBILD 3.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jens,


hmmm, das hatte ich auch schon ausprobiert. Das Problem hierbei war, dass immer bis zur 1. Trennzeichen ( ; )gesucht wird.

Gruß

anilo14
 
Zuletzt bearbeitet:
Nur wenn ich DELETE aufrufe, macht mal Programm nicht das, was ich mir vorstelle (Anhang: BILD 2).
Läuft diese Programm nur einmalig durch oder zyklisch?
Das von dir angehängte Bild deutet darauf hin, dass im ersten PLC-Zyklus '007' weggeschnitten wird, im nächsten Zyklus 'JamesBond' und im dritten gibts kein Semikolon mehr, deshalb bleibt CIA stehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ DOD666 Hmm, habe noch nicht mit der SPLIT Funktion gearbeitet. Muss die Funktion erstmal verstehen:rolleyes:


@maxder2te: ja habe die Funktion über OB1 laufen lassen, also zyklisch. Sollte ich die Funktion mal über OB100 laufen lassen?
 
@maxder2te: ja habe die Funktion über OB1 laufen lassen, also zyklisch. Sollte ich die Funktion mal über OB100 laufen lassen?
Entweder das, oder zu baust vor der Zerlegung die Zeile
Code:
Test_String := '007;JamesBond;CIA';
ein, um den String am Programmbeginn zu refreshen.

lg

PS:
Code:
BEGIN_KLUGSCHEISSMODUS
// eigentlich müsste es
Test_String := '007;JamesBond;MI6';
// heißen
END_KLUGSCHEISSMODUS
 
Ok, ich habs vielen Dank an euch zwei:).


@maxder2te mein letztes Zeichen im String wird nicht getrennt, habe deshalb am Ende den Befehl "RIGHT" genommen und anschließend "Delete". Weißt du vllt wie man das anders bzw schöner realisieren könnte? :D


Grüße

anilo14
 

Anhänge

  • Bild4.jpg
    Bild4.jpg
    87,7 KB · Aufrufe: 64
Zuviel Werbung?
-> Hier kostenlos registrieren
Alles was du mit MID machst, solltest du auch mit LEFT machen können.
Ansonsten: FIND liefert sicher was brauchbares zurück, mit dem du herausfinden kannst, ob noch ein Semikolon gefunden wurde (oder nicht). Außerdem solltest du mit LEN (oder LENGTH?, oder so) auch die Länge des Reststrings herausfinden.

lg
 
Ok top, werde das heute Abend oder morgen früh versuchen. Jetzt geht es aber erstmal zum Weihnachtsmarkt. Berichte dann obs geklappt hat oder nicht ;)
 
Zurück
Oben