Ich denke IsInArray sollte der Ersatz für CharInSet sein.
Um auf die Frage am Ende zurückzukommen, wie man es umsetzt,
so sollte es theoretisch mit 0- und 1-basierten auf allen Platformen funktionieren.
Delphi-Quellcode:
{$ZEROBASEDSTRINGS ON} // Test 0-based
procedure TForm1.FormCreate(Sender: TObject);
var
LongForbiddenChars: array of Widechar;
LStr : String;
I: Integer;
begin
LongForbiddenChars := ['A', 'B', 'E'];
LStr := 'BanAnE';
for I := Low(LStr) to High(LStr) do begin
if LStr[I].IsInArray( LongForbiddenChars ) then begin
LStr[I] := '_';
//LStr.Chars[] := '_' // kann man leider nicht Verwenden, nur Lesend, dehalb Low/High
// // statt for 0 to LStr.Length-1 do
end;
end;
end;
Das kompiliert bei mir ohne Warnings (zumindest unter
Win32), mit und ohne 0-basiert.
Ich würde am liebsten immer mit 0-basierten Strings arbeiten, und nicht diesen Low/High Mischmasch, aber das geht leider so einfach nicht wegen s.o.
Wahrscheinlich müsste es noch einen TCharHelper mit Chars[] Setter geben
Rollo