IdHeaderCoderIndy.pas 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. unit IdHeaderCoderIndy;
  2. interface
  3. {$i IdCompilerDefines.inc}
  4. uses
  5. IdGlobal, IdHeaderCoderBase;
  6. type
  7. TIdHeaderCoderIndy = class(TIdHeaderCoder)
  8. public
  9. class function Decode(const ACharSet: string; const AData: TIdBytes): String; override;
  10. class function Encode(const ACharSet, AData: String): TIdBytes; override;
  11. class function CanHandle(const ACharSet: String): Boolean; override;
  12. end;
  13. // RLebeau 4/17/10: this forces C++Builder to link to this unit so
  14. // RegisterHeaderCoder can be called correctly at program startup...
  15. {$IFDEF HAS_DIRECTIVE_HPPEMIT_LINKUNIT}
  16. {$HPPEMIT LINKUNIT}
  17. {$ELSE}
  18. {$HPPEMIT '#pragma link "IdHeaderCoderIndy"'}
  19. {$ENDIF}
  20. implementation
  21. uses
  22. IdGlobalProtocols;
  23. class function TIdHeaderCoderIndy.Decode(const ACharSet: string; const AData: TIdBytes): String;
  24. begin
  25. try
  26. Result := CharsetToEncoding(ACharSet).GetString(AData);
  27. except
  28. Result := '';
  29. end;
  30. end;
  31. class function TIdHeaderCoderIndy.Encode(const ACharSet, AData: String): TIdBytes;
  32. begin
  33. try
  34. Result := CharsetToEncoding(ACharSet).GetBytes(AData);
  35. except
  36. Result := nil;
  37. end;
  38. end;
  39. class function TIdHeaderCoderIndy.CanHandle(const ACharSet: String): Boolean;
  40. begin
  41. try
  42. Result := CharsetToEncoding(ACharSet) <> nil;
  43. except
  44. Result := False;
  45. end;
  46. end;
  47. initialization
  48. RegisterHeaderCoder(TIdHeaderCoderIndy);
  49. finalization
  50. UnregisterHeaderCoder(TIdHeaderCoderIndy);
  51. end.