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
Ich habe im Moment das Problem das ich mit Hilfe SySFileWrite einen String in eine Datei schreiben möchte. Bei dem ganzen handelt es sich um ein Testsoftware bei dem ich Fehlermeldungen in einer seperaten Datei landen sollen.
Das Problem das ich habe ist das ich leider bisher keine gescheite Möglichkeit gefunden habe einen Zeilenumbruch in der Datei hinzubekommen. Die Strings die ich dort hinein schreibe werden ständig aneinander gehängt. Und das ganze sieht logischerweise nicht besonders übersichtlich so aus.
Kann mir jemand helfen bzw. hat eine Lösung für das Problem?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
ist das "^M" immer das selbe, oder kommen auch andere zeichen als letzte zwei zeichen vor?
ich meine mich erinnern zu können, dass es in LabView ein ähnliches problem gab. da wurde der string automatisch um zwei verlängert und die mit ausgegeben letzten zeichen waren zufällig...
aber eine konkrete lösung ist mir leider nicht mehr bekannt...
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
ist zwar keinesfalls die dauerhafte optimale lösung (muss ja einen grund haben, warum das ^M da steht), aber du könntest nachträglich einfach jeden string um 2 byte "beschneiden".
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich habe im Moment das Problem das ich mit Hilfe SySFileWrite einen String in eine Datei schreiben möchte. Bei dem ganzen handelt es sich um ein Testsoftware bei dem ich Fehlermeldungen in einer seperaten Datei landen sollen.
Das Problem das ich habe ist das ich leider bisher keine gescheite Möglichkeit gefunden habe einen Zeilenumbruch in der Datei hinzubekommen. Die Strings die ich dort hinein schreibe werden ständig aneinander gehängt. Und das ganze sieht logischerweise nicht besonders übersichtlich so aus.
Kann mir jemand helfen bzw. hat eine Lösung für das Problem?
Ganz einfach :
Deklariere ein String mit dem Schlüssel für "Return" und "Line Feed"
sReturn : STRING := '$R$L';
Wenn Du diesen String in die Datein überträgst hast du dein Zeilenumbruch.
Der Zeilenumbruch funktioniert soweit - nur leider bekomme ich zum Abschluss einer Zeile jetzt immer noch ein "^M".
Weiss jemand wie ich das noch loswerde? Zur Erwähnung mein Think-IO läuft unter Linux.
ist das "^M" immer das selbe, oder kommen auch andere zeichen als letzte zwei zeichen vor?
ich meine mich erinnern zu können, dass es in LabView ein ähnliches problem gab. da wurde der string automatisch um zwei verlängert und die mit ausgegeben letzten zeichen waren zufällig...
aber eine konkrete lösung ist mir leider nicht mehr bekannt...
Das "^M" am Ende einer Zeile kommt jedesmal in keiner unveränderter Form.
Sieht dann ungefähr so aus:
DATUM: 31ter 15:6:1 TEST_Profibus_DPM_Hilscher_LIB^M
DATUM: 31ter 15:6:51 TEST_KbusConfigurator^M
DATUM: 31ter 15:6:51 Links aktuelle Werte: IN:0000 OUT:0001^M
DATUM: 31ter 15:8:2 TEST_KbusConfigurator^M
DATUM: 31ter 15:8:7 Links aktuelle Werte: IN:1000 OUT:1001^M
DATUM: 31ter 15:8:51 TEST_KbusConfigurator^M
DATUM: 31ter 15:8:51 Links aktuelle Werte: IN:1100 OUT:1101^M
ist zwar keinesfalls die dauerhafte optimale lösung (muss ja einen grund haben, warum das ^M da steht), aber du könntest nachträglich einfach jeden string um 2 byte "beschneiden".
Versuchs mal mit '$R$N'
Wenn man aus einem file in Codesys liest, so erhält man bei Abschluß einer zeile durch "cure" diesen String am ende einer gelesenen Zeile
siehe Hilfe string-Konstanten
Bei Windows wird eine neue Zeile durch und gebildet. Das hast du ja auch in deinem sReturn-String.
Unter Unix/Linux wird eine neue Zeile nur durch gebildet.
Versuche es einmal mit
sReturn : STRING := '$N';
MFG
Benjamin