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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Stringvariable mit Leerzeichen auffüllen

  1. #1
    Registriert seit
    24.09.2013
    Beiträge
    16
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich bräuchte mal Hilfe.
    Und zwar habe ich eine Stringvariable mit einer Länge von 128 Byte.
    Jetzt wird dort ein Text reingeschrieben, der aber meistens kürzer als 128 Zeichen ist.
    Nun möchte ich die restlichen Zeichen mit Leerzeichen auffüllen.

    Gibt es da eine einfache Lösung?

    Danke!

    Mfg
    Thomas
    Zitieren Zitieren Stringvariable mit Leerzeichen auffüllen  

  2. #2
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.568
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    Du könntest die Stringvariable zuerst mit

    Code:
    myVar := '';
    initialisieren und anschließend mit REPLACE (aus der Standardbibliothek) die Anzahl Zeichen auf die Variable schreiben.
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  3. #3
    thomas1285 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    24.09.2013
    Beiträge
    16
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Geht das ganze auch in AWL?
    Oder ist das da komplizierter?

  4. #4
    Registriert seit
    06.10.2009
    Ort
    NRW
    Beiträge
    1.568
    Danke
    63
    Erhielt 258 Danke für 218 Beiträge

    Standard

    Bei AWL bin ich raus...
    Meine Motivation läuft nackig mit einem Cocktail über eine Wiese.

  5. #5
    Registriert seit
    22.01.2008
    Ort
    Allgäu, da wo die Kühe schöner sind als die Mädels
    Beiträge
    1.773
    Danke
    50
    Erhielt 729 Danke für 434 Beiträge

    Standard

    L ' '
    T WohinAuchImmer

    Achtung die Striche sind die über der Raute
    Gruss Audsuperuser

    Herzlich Willkommen im Chat:
    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Zitat Zitat von thomas1285 Beitrag anzeigen
    Und zwar habe ich eine Stringvariable mit einer Länge von 128 Byte.
    Jetzt wird dort ein Text reingeschrieben, der aber meistens kürzer als 128 Zeichen ist.
    Nun möchte ich die restlichen Zeichen mit Leerzeichen auffüllen.
    Wer schreibt da Text rein? Ein HMI oder Operator Panel oder ...?
    Kann der/dasjenige nicht das zweite Byte im Stringkopf korrekt auf die tatsächliche Stringlänge setzen?
    z.B. WinCC flexible macht das so und die Zeichen in der Stringvariable hinter dem Text werden nicht angezeigt.

    Woher weiß Dein Programm, welches das letzte erwünschte Zeichen im Eingabestring ist bzw. ab welcher Position mit Leerzeichen aufgefüllt werden soll?
    Wann soll aufgefüllt werden?

    Oder ist Dein String in Wahrheit gar kein String (sondern z.B. ein CHAR-Array)?


    Zitat Zitat von thomas1285 Beitrag anzeigen
    Geht das ganze auch in AWL?
    Die String-Funktionen aus der Standardbibliothek kann man auch in AWL aufrufen.
    Wenn Du hinter die tatsächliche Stringlänge schreiben willst, dann ist CONCAT wohl besser geeignet.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    Zitat Zitat von thomas1285 Beitrag anzeigen
    Hallo,

    ich bräuchte mal Hilfe.
    Und zwar habe ich eine Stringvariable mit einer Länge von 128 Byte.
    Jetzt wird dort ein Text reingeschrieben, der aber meistens kürzer als 128 Zeichen ist.
    Nun möchte ich die restlichen Zeichen mit Leerzeichen auffüllen.

    Gibt es da eine einfache Lösung?

    Danke!

    Mfg
    Thomas

    - Du besetzt deine Stringvariable stets mit Leerzeichen vor
    - Wenn der Text reingeschrieben wird, werden dann die Leerzeichen einfach überschrieben, der Rest verbleibt so
    - du kopierst dann deine Stringvariable an eine andere Stelle und machst damit, was auch immer du damit bezweckst
    - deine Stringvariable muss dann sofort wieder mit den Leerzeichen vorbesetzt werden, ehe der nächste Text kommt
    - Kommt der nächste Text, wiederholst du den Vorgang

    Aber achte dabei auf die beiden Header-Bytes der Stringvariablen
    kind regards
    SoftMachine

  8. #8
    Registriert seit
    13.09.2010
    Beiträge
    2.292
    Danke
    178
    Erhielt 375 Danke für 355 Beiträge

    Standard

    .
    Zitat Zitat von thomas1285 Beitrag anzeigen
    Geht das ganze auch in AWL?
    Oder ist das da komplizierter?
    in AWL benutzt du einfach die SFC20 "BLOCKMOVE", um die Leerzeichen hineinzukopieren (von einer anderen Stelle, wo sie fest hinterlegt sind),
    für das herauskopieren deines Textes kannst du die SFC ebenfalls benutzen.

    Über die SFC20 findest du HIER mehr.
    kind regards
    SoftMachine

  9. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.708
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Hallo,
    ich würde s wie folgt machen (das geht dann auch ganz gut mit AWL umzusetzen) :
    - Du legst dir (quasi als Konstante) den mit 128 Leerzeichen aufgefüllten String in deiner SPS an.
    - Du nimmst deinen Eingabestring und verbindest diesen mit dem Leerstring - mittels Concat.
    - Nun schneidest du dir von dem so beu erzeugten (Temp-)String die linken 128 Zeichen mittels Left ab und überträgst die dorthin, wo du den "neuen" String verwenden möchtest.

    Das Vorbelegen des Eingabestrings bring m.E. gar nichts, da der String durch eine Eingabe u.U. immer umformatiert werden würde.

    Gruß
    Larry

  10. #10
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.163
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von SoftMachine Beitrag anzeigen
    in AWL benutzt du einfach die SFC20 "BLOCKMOVE", um die Leerzeichen hineinzukopieren (von einer anderen Stelle, wo sie fest hinterlegt sind),
    Vorsicht mit solchen komplizierten Tipps! Der TE wirkt nicht so, als ob er mit ANY-Pointern umgehen könnte.
    Wenn man schon für STRING eigentlich ungeeignete Funktionen wie BLKMOV empfiehlt, dann besser SFC21 FILL.


    Zitat Zitat von Larry Laffer Beitrag anzeigen
    Das Vorbelegen des Eingabestrings bring m.E. gar nichts, da der String durch eine Eingabe u.U. immer umformatiert werden würde.
    Das denke ich auch. Deswegen meine Nachfragen gestern.

    Vielleicht sollte man aber mit weiteren Vorschlägen besser warten, ob der TE sich nochmal meldet und genauer erklärt, was er warum tun will.


    CONCAT beachtet bereits die maximale Länge des Zielstrings. Da braucht man normalerweise nicht mehr abschneiden.
    Man kann an einen beliebig langen String mit CONCAT einen 128 Zeichen langen String anhängen - wenn der Zielstring max 128 Zeichen aufnehmen kann, dann ist das Ergebnis ein 128 Zeichen langer String.

    Harald
    Geändert von PN/DP (27.09.2014 um 11:20 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  11. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    Larry Laffer (27.09.2014)

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 12.02.2012, 10:17
  2. zu viele Leerzeichen bei einer *.txt Datei
    Von Anton323 im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 11.01.2012, 12:46
  3. DATE_AND_TIME in Stringvariable wandeln
    Von vsoft im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 07.07.2010, 14:00
  4. MB auffüllen...
    Von pinolino im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 30.05.2010, 07:52
  5. TargetVisu - Textfeld mit Nullen auffüllen ->GRRRRRRRRRRRR
    Von PLC-Gundel im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 15.12.2009, 14:05

Lesezeichen

Berechtigungen

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