Delphi TIdBytes を String へ変換

Delphi Indy の TIdBytes を String へ文字コードを指定して変換

IdGlobal の BytesToString 関数を使うと
  1. S := BytesToString(Buffer, enDefault);  
なんですが、デフォルトエンコード(Shift-jis)で処理してくれません(utf8等では可能かも)
また、警告も出たりします

TIdBytes の実態は TIdBytes = array of Byte; なので、単純に関数を作成して
  1. function IdByteToString(Buffer: TIdBytes; AEncoding: TEncoding): string;  
  2. begin  
  3.     Result := AEncoding.GetString(TBytes(Buffer));  
  4. end;  
  5.   
  6. S := IdByteToString(Buffer, TEncoding.Default);  
のような感じで利用

コメント