Ich meine >0, muss ich bei ASCII-Zeichen das <>0 benutzen?
Hmmm, ein Vergleich mit >, >=, < oder <= sollte bei ASCII-Zeichen (CHAR) zulässig sein, um eine alphabetische Sortierung zu ermöglichen, aber möglicherweise nicht bei BYTE, wenn BYTE nämlich als ein halbes WORD verstanden wird!? Bei Word wird komischerweise unterstellt, dass die genannten VergleichsOperatoren keinen Sinn machen und man deshalb nur auf = oder <> vergleichen kann.
Bei SINT (short INT, WerteBereich: -128..127) und USINT (unsigned short INT: WerteBereich: 0..255) hingegen sind die Vergleiche jedoch allemal sinnvoll.
Diese Einschränkungen sind künstlich aufgepfropft, um den Compiler in die Lage zu versetzen, dem Programmierer auf die Finger zu klopfen.
Aber leider scheint dies nicht immer wirklich konsequent umgesetzt zu sein.
Ja, ich muss sicherstellen, dass alle Zeichen vorhanden sind.
Vorhanden? Ich schätze mal, dass hier eine "PlausibilitätsPrüfung" gemacht wird, ob die Daten irgendwie "beschädigt" sind.
Wenn es tatsächlich um druckbare Zeichen gegangen wäre (außer dem Leerzeichen), hätte man aber auch auf < 16#7F abfragen müssen.
Mit diesem Einwand hat Mario gar nicht so Unrecht. 127 alias 16#7F zählt "ursprünglich" nicht zu den druckbaren Zeichen.
Aber die Zeichen 128..255 gehörten anfangs auch nicht dazu ...
Sorry für meine ungenaue Erklärung. Ich hoffe, es ist jetzt verständlicher.
Sorry, aber Deine Erklärung ist leider unklar geblieben.
Ist denn irgendwo dokumentiert, welche Zeichen zulässig sind?
Ich meine >0, muss ich bei ASCII-Zeichen das <>0 benutzen?
Mittlerweile bin ich mir fast sicher, dass tatsächlich >32 gemeint ist, also >' '.
Vielleicht ist sogar >=32 gemeint, also >=' '.
Darf man denn mal fragen, zu welchen Konsequenzen das PrüfungsErgebnis führen kann/soll, wenn nicht alle Zeichen >32 sind? Vielleicht kann man daraus zurückschliessen, wozu die Prüfung dient.
Ich vermute mal, dass du deinen "Prägecode", wenn welcher dort eingetragen ist, als String weiter verwendest (oder ?).
Falls ja dann könntest du ihn in SCL auch einfach mit einem gleich langen Leerstring vergleichen. Das wäre dann auch deutlich schneller zu durchschauen was das soll ... (und du bauchst keine Schleife etc.)
Edit:
Das sollte ohne Weiteres sehr gut funktionieren. Wenn mindestens ein beliebiges der Zeichen <=32 ist, dann ist der komplette String kleiner als ein String aus der entsprechenden Anzahl von LeerZeichen.
So gesehen sollten 2 Vergleiche genügen, um festzustellen, dass jedes Zeichen >='0' UND <='9' ist:
test := String >= "00000000000000" AND String <= "99999999999999" ;