Die Frage auch hier muss sein: Wozu? Ich stand zB auch mal vor dem Problem, daß ich Dateinamen mit Hilfe von Personennamen erzeugt hatte. In dem einen oder anderen Filesystem führte das zu, nennen wir es mal Problemen. Ich hatte dann angefangen mühselig Umlaute in ihre Pendants zu übersetzen, aber dachte mir auf der Hälfte des Wegs: Ich bin doch nicht blöd, und habe die Umlaute schlicht rausgestrichen. Liest ja eh keiner, denn die Dateien werden per
DB gefunden/verwaltet.
Wenn das also schlußendlich niemand oder nur ein sehr eingeschränkter Personenkreis zu sehen bekommt, dann gilt KISS und die Sache gehört anders gelöst.
Sherlock
Übersetzt auf meine obige Routine hieße das schlicht:
Delphi-Quellcode:
function ZeichenErsetzen(sIn : String) : String;
var
i : Integer;
begin
Result := '';
for i := 1 to Length(sIn) do begin
Case sIn[i] Of
#48 .. #57, #65 .. #90, #97 .. #122: Result := Result + sIn[i];
else
Result := Result + '_';
end;
end;
while Pos('__',Result) > 0 do Result := AnsiReplaceText(Result,'__','_');
end;
Auch wenn hier letztlich Zeichen verschluckt werden, es bleibt für's Gehirn lesbar und das dürfte wesentlich sein, sofern denn Lesbarkeit überhaupt erforderlich sein sollte.