Einzelnen Beitrag anzeigen

Rollo62

Registriert seit: 15. Mär 2007
4.095 Beiträge
 
Delphi 12 Athens
 
#6

AW: Wie aktuell sind die Warnhinweise des Compilers

  Alt 28. Sep 2018, 07:51
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
  Mit Zitat antworten Zitat