SA0175: Verdächtige Operation auf Zeichenkette
Anmerkung
Aktivieren Sie diese Regel nicht ständig. Aktivieren Sie die Regel nur bei Bedarf, um die Stellen im Code zu finden, die bei einer Umstellung auf UTF-8 Kodierung geprüft werden sollten.
Prüft, ob die Projektoption UTF-8-Kodierung für Zeichenketten aktiviert werden kann. Das ist dann der Fall, wenn keine Codestellen mit verdächtigen Operationen gefunden werden.
Bei der Umstellung auf UTF-8-Kodierung entsprechen die ersten 127 Zeichen der ASCII-Kodierung. Alle anderen Zeichen werden jedoch mit mehr als einem Byte kodiert. Dadurch kann es bei der Verarbeitung von Zeichenketten zu einer Änderung im Verhalten kommen. So kann ein String-Literal, das Nicht-ASCII-Zeichen enthält, länger werden. Oder aber Zugriffe in einen String über Index können auf das falsche Element zugreifen. Schlussendlich können sogar Zugriffe sogar auf einen ungültigen Byte-Offset passieren.
Wenn die Regel aktiv ist, werden alle Codestellen, die eines der folgenden Konstrukte enthält, gemeldet:
Indexzugriff auf Ein-Byte-Strings
Beispiel:
str[2]
Meldung: SA0175: Enumeration mit Attribut 'strict'Verdächtige Operation an Zeichenkette: Indexzugriff '<Ausdruck>'
Adresszugriff auf Single-Byte-Strings
Beispiel:
ADR(str)
Meldung:
SA0175:Enumeration mit Attribut 'strict'Verdächtige Operation an Zeichenkette: Möglicher Indexzugriff '<Ausdruck>'
Aufruf von Stringfunktionen der Bibliothek
Standard
, außer bei Aufruf der FunktionenCONCAT
undLEN
Meldung:
SA0175:Enumeration mit Attribut 'strict'Verdächtige Operation auf String: Möglicher Indexzugriff '<Ausdruck>'
Byte-Literal, das Nicht-ASCII-Zeichen enthält
Beispiele:
str := '99€'; str :='Ä';
Meldung:
SA0175: Verdächtige Operation an Zeichenkette: Literal '<Literal>' enthält Nicht-ASCII-Zeichen