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

String zusammensetzen der länger als 255 Zeichen ist?

c.reps
2009-02-18
2009-02-19
  • c.reps - 2009-02-18

    Hallo Gemeinschaft ,

    es kam bestimmt schon einmal hier im Forum vor, doch leider hab ich nichts gefunden oder nach dem falschen gesucht.

    Meine Frage:

    Kann ich auch einen String zusammensetzen der länger als 255 Zeichen ist - wenn ja wie

    CONCAT funktioniert nur bis 255 Zeichen.

    Ich habe ein ARRAY [] OF STRING und ich bräuchte den Inhalt als einen String.

    Über Hilfen oder Ratschläge wäre ich dankbar.

     
  • bonatus - 2009-02-18

    Hallo,

    ich kann dich leider nur auf ein anders Forum weiterleiten. Ich will ja nicht anderes Gedankengut als meines darstellen.

    http://sps-forum.de/showpost.php?p=98204&postcount=8

    gruß bonatus

     
  • hugo - 2009-02-18

    einen string der länger ist als 255 geht nicht, das ist eine feste begrenzung des compilers.

    eine lösungsmöglichkeit ist ein array of byte das kann dann bis zu 32000 zeichen aufnehmen

    bausteine für buffer handling, kopieren und rückschreiben von strings findest du ind ewr oscat lib unter w www.oscat.de w

     
  • bonatus - 2009-02-18

    Hallo,

    also ich kann String mit beliebiger länge definieren und benutzen.

    z.B.: StrVar:String(1024);

    gruß bonatus

     
  • c.reps - 2009-02-18

    Danke, hat mir schon weitergeholfen.

     
  • hugo - 2009-02-18

    hallo c.reps

    habe ich hier etwas übersehen

    laut manual ist bei codesys 2.3 die stringlänge auf 255 begrenzt.

    ausprobioert und der compiler meldet ungültige stringlänge wenn string(n) n > 255

    das ist dioch das forum für codesys 2.3 und nicht 3.0 oder????

     
  • bonatus - 2009-02-18

    Hallo,

    ich benutze TwinCat und da funktioniert es.

    Ich habe auch CoDeSys 2.3.9.10 und da kann ich auch Strings die länger sind als 255 Zeichen definieren und benutzen.

    gruß bonatus

     
  • Anonymous - 2009-02-18

    Originally created by: mg

    Solange ich die String Funktionen von Codesys nicht verwende hatte ich schon jede Größe von Strings verwendet. Und zumindest bei mir funktionierten die (ist aber vielleicht systemabhäüngig)

    PS: String mit Pointern bearbeiten.

     
  • hugo - 2009-02-18

    wie bitte definierst du den string?

    string(1000) geht definitiv nicht der compiler sagt unerlaubte stringlänge

    als array[0..1000] of byte definiert sicherlich das machen wir auch mit buffern usw....

    aber dann nennt man das ganze nicht mehr string, es ist dann ein array of byte und kein string

    string ist ein vordefinierter datentyp des compilers

    ich nutze codesys 2.3.9.11 aktuellstze version und kann defnitiv keinen string(n) mit n > 255 definieren....

    gibt es da eine gehaeime einstellung die strings > 255 erlaubt?

    oder ist das eine limitierung im target file ich werde mal verschiedene targets untersuchen.

    twincat macht sicherlich nichts anderes als codesys den es ist codesys lediglich die steuerungskonfiguration läuft dort anders

     
  • Erik Böhm - 2009-02-18

    Moin

    Also es stimmt definitiv, dass String länger als 255 Zeichen sein dürfen.

    Definition wie immer mit strText: STRING(1000);

    Bei mir funktioniert das wunderbar, auch schon seit Jahren.

    Nur die von 3S gelieferten Library Funktionen (z.B. CONCAT, LEFT, MID, usw...) hören bei > 255 auf.

    Anbei eine CONCAT Funktion die aus 2x512 Byte String einen 1024 Byte String macht.

    VORSICHT ich habe das auch schon mit grösseren Strings getestet. Die Grenze liegt bei 8kB (8192 Bytes). Das ist der maximale Stack der für Funktionen reserviert wird. Bei grösseren Funktionsparametern gibts nen schönen blauen Screen (RTE auf Windows Rechner).

    Gruss

    Erik

    ASYSCONCAT.zip [477 Bytes]

     
  • hugo - 2009-02-18

    nun ich hab mittlerweile etwas weiter getestet und folgendes festgestellt

    die max erlaubte stringlänge hängt vom tagret file ab.

    beispiel:

    wago 842 erlaubt nur 256 zeichen (256 nicht 255)

    ein wago 841 neue firmware erluabt hingegen 512

    die maximale dstringlänge ist wohl im targetfile vorgegeben und für verschiedene targets unterschiedlich.

    in der standard.lib von codesys sind alle string funktionen mit string(255) definiert.

    vorsicht der compiler meldet hier keinen fehler, wer schneidet die strings einfach ab und das programm liefert ohne zu murren falsche ergebnisse.

    habe auch festgestellt das bei einem moeller target als string konstanten nur 253 zeichen möglich sind.

    IMG: string.jpg

     
  • Anonymous - 2009-02-19

    Originally created by: mg

    ... danke für Eure Informationen und Eure Tests (erspart mir in Zukunft sicher viel Ärger ung Zeit)

    SUPER !!!

     

Log in to post a comment.