Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Ascii85 Encoding and Decoding

See more Encryption Examples

Demonstrates ascii85 encoding and decoding.

Note: Requires Chilkat v9.5.0.79 or greater.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.BinData,
  Chilkat.StringBuilder;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  sb: TStringBuilder;
  encodedAscii85: string;
  bd: TBinData;

begin
  success := False;

  //  First demonstrate encoding strings to ascii85 and back.
  sb := TStringBuilder.Create;

  success := sb.Append('Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.');

  encodedAscii85 := sb.GetEncoded('ascii85','utf-8');
  WriteLn(encodedAscii85);

  //  Result is: 9jqo^BlbD-BleB1DJ+*+F(f,q/0JhKF<GL>Cj@.4 ... DII?(E,9)oF*2M7/c

  //  Decode back to the original:
  sb.Clear();
  sb.Append(encodedAscii85);
  success := sb.Decode('ascii85','utf-8');
  WriteLn('Original:');
  WriteLn(sb.GetAsString());

  //  ---- Now encode binary data to ascii85 ----
  bd := TBinData.Create;
  success := bd.LoadFile('qa_data/jpg/starfish20.jpg');
  encodedAscii85 := bd.GetEncoded('ascii85');
  WriteLn(encodedAscii85);

  //  Result is:  s4IA0!"_al8O`[\!<E0k!([(is8E!F7VQ[M+Eqj?FED)3+C]U=6"Fn ...

  //  Decode...
  bd.Clear();
  bd.AppendEncoded(encodedAscii85,'ascii85');
  success := bd.WriteFile('qa_output/starfish20.jpg');


  sb.Free;
  bd.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.