Ein einzigartiger Satz von Char
kann für Ihren Zweck verwendet werden.
function GetValueTrat(const aValue: string): string;
const
CHARS = ['0'..'9', 'a'..'z', 'A'..'Z'];
var
i: Integer;
begin
Result := aValue.Trim;
for i := 1 to Length(Result) do
begin
if not (Result[i] in CHARS) then
raise Exception.Create('Non valido');
end;
end;
Beachten Sie, dass in Ihrer Funktion, wenn aValue
enthält ein Leerzeichen - wie 'test value '
zum Beispiel - eine Ausnahme ausgelöst wird, um die Verwendung von Trim
nach der if
Anweisung nutzlos ist.
Ein regulärer Ausdruck wie ^[0-9a-zA-Z]
kann Ihr Problem in einem eleganteren Weg meiner Meinung nach lösen.
EDIT
Nach dem @RBA's comment auf die Frage, System.Character.TCharHelper.IsLetterOrDigit kann für die obige Logik als Ersatz verwendet werden:
if not Result[i].IsLetterOrDigit then
raise Exception.Create('Non valido');
Warum nicht mit http://docwiki.embarcadero.com /Libraries/Seattle/en/System.Character.TCharHelper.IsLetterOrDigit – RBA
Weil ich entweder Buchstaben und Zahlen habe –
@ img.simone Buchstaben oder Zahlen: Das ist genau was die verknüpfte Funktion tut. – Roddy