Alternativ könnte man dafür auch Regular Expressions verwenden...
Unit RegularExpressions einbinden
Delphi-Quellcode:
function HatStringKeineSonderzeichen(const aString: string): Boolean;
begin
result := TRegex.IsMatch(aString, '^[A-Za-z0-9 _\-]*$');
end;
function HatStringSonderzeichen(const aString: string): Boolean;
begin
result := TRegex.IsMatch(aString, '[^A-Za-z0-9 _\-]');
end;
Im XE7 sollte das auch für Leerstrings funktionieren (HatStringKeineSonderzeichen matched, HatStringSonderzeichen nicht) - das müsstest wenn nötig aber testen.
In meinem XE3 will er Leerstrings absolut nicht matchen, da müsste man also ggf. eine Sonderbehandlung ergänzen.
Umgestellt wurde das wohl mit XE6 (
http://www.regexguru.com/2014/05/wha...r-expressions/)