Hier eine Funktion die ich mal zur Überprüfung von Pfaden geschrieben habe:
Delphi-Quellcode:
function IsValidPath(s: String): Boolean;
var
i: Integer;
t: String;
begin
Result := False;
if Length(s) < 1 then Exit;
if s[Length(s)] <> '\' then s := s + '\';
if not (((s[1] in ['a'..'z', 'A'..'Z']) and (Copy(s, 2, 2) = ':\')) or
(Copy(s, 1, 2) = '\\')) then Exit;
if Copy(s, 1, 2) = '\\' then Delete(s, 1, 2) else Delete(s, 1, 3);
while Length(s) > 0 do begin
t := Copy(s, 1, Pos('\', s) - 1);
if t = '' then Exit;
for i := 1 to Length(t) do if Pos(t[i], '\/:*?"<>|') > 0 then Exit;
Delete(s, 1, Pos('\', s));
end;
Result := True;
end;
Ist schon paar Jahre alt, aber ich denke, daß sie funktionierte.
Übrigens, wenn du eine Funktion suchst die überprüft ob Bezeichner aus diesen Buchstaben besteht: 'A'..'Z', 'a'..'z', '0..'9', '_', dann gibt es bereits eine fertige Funktion:
if not IsValidIdent(s) then ...