IdCoder.pas 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. { $HDR$}
  2. {**********************************************************************}
  3. { Unit archived using Team Coherence }
  4. { Team Coherence is Copyright 2002 by Quality Software Components }
  5. { }
  6. { For further information / comments, visit our WEB site at }
  7. { http://www.TeamCoherence.com }
  8. {**********************************************************************}
  9. {}
  10. { $Log: 10089: IdCoder.pas
  11. {
  12. { Rev 1.0 2002.11.12 10:32:16 PM czhower
  13. }
  14. unit IdCoder;
  15. interface
  16. uses
  17. Classes,
  18. IdBaseComponent, IdGlobal;
  19. type
  20. TIdEncoder = class(TIdBaseComponent)
  21. public
  22. function Encode(const ASrc: string): string; overload;
  23. function Encode(ASrcStream: TStream; const ABytes: integer = MaxInt): string; overload; virtual;
  24. abstract;
  25. class function EncodeString(const AIn: string): string;
  26. end;
  27. TIdDecoder = class(TIdBaseComponent)
  28. public
  29. class function DecodeString(AIn: string): string;
  30. function DecodeToString(const AIn: string): string;
  31. procedure DecodeToStream(AIn: string; ADest: TStream); virtual; abstract;
  32. end;
  33. implementation
  34. uses
  35. SysUtils;
  36. { TIdDecoder }
  37. class function TIdDecoder.DecodeString(AIn: string): string;
  38. begin
  39. with Create(nil) do try
  40. Result := DecodeToString(AIn);
  41. finally Free; end;
  42. end;
  43. function TIdDecoder.DecodeToString(const AIn: string): string;
  44. {var
  45. LDestStream: TIdReadMemoryStream;
  46. begin }
  47. var
  48. LDestStream: TStringStream;
  49. begin
  50. LDestStream := TStringStream.Create(''); try {Do not Localize}
  51. DecodeToStream(AIn, LDestStream);
  52. Result := LDestStream.DataString;
  53. finally FreeAndNil(LDestStream); end;
  54. end;
  55. { TIdEncoder }
  56. function TIdEncoder.Encode(const ASrc: string): string;
  57. var
  58. LSrcStream: TIdReadMemoryStream;
  59. begin
  60. LSrcStream := TIdReadMemoryStream.Create; try
  61. LSrcStream.SetPointer(Pointer(ASrc),Length(ASrc));
  62. Result := Encode(LSrcStream);
  63. finally FreeAndNil(LSrcStream); end;
  64. end;
  65. class function TIdEncoder.EncodeString(const AIn: string): string;
  66. begin
  67. with Create(nil) do try
  68. Result := Encode(AIn);
  69. finally Free; end;
  70. end;
  71. end.