--- ---

The following code converts strings into character sets and vice-versa.

Note: this code works only for non-Unicode versions of Delphi (i.e. Delphi 2007 and earlier) where `string = AnsiString`. For Delphi 20009 and later use TSysCharSet instead of TCharSet and replace all occurrences of string with AnsiString.

    type
      TCharSet = set of char;

    function StringToCharSet(const Txt: string): TCharSet;
    var
      CP: PChar;
    begin
      Result := [];
      if Txt = '' then
        Exit;
      CP := PChar(Txt);
      while CP^ <> #0 do
      begin
        Include(Result, CP^);
        Inc(CP);
      end;
    end;

    function CharSetToString(const Chars: TCharSet): string;
    var
      I: Integer;
    begin
      Result := '';
      for I := 0 to 255 do
        if Chr(I) in Chars then
          Result := Result + Chr(I);
    end;