Sample code for 30+ languages & platforms
Lazarus Pascal

Demonstrate Binary Data Encoding Methods

Demonstrates binary data encoding methods.

Note: This example requires Chilkat v9.5.0.64 or later.

Chilkat Lazarus Pascal Downloads

Lazarus Pascal
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
  binData: TBinData;
  offset: Integer;
  numBytes: Integer;
  sb: TStringBuilder;

begin
  binData := TBinData.Create;

  //  Append 10 bytes: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09
  binData.AppendEncoded('00010203040506070809','hex');

  //  Show that binData contains 10 bytes.
  WriteLn('num bytes = ' + binData.NumBytes);

  //  Get as base64
  WriteLn('base64: ' + binData.GetEncoded('base64'));

  //  Get a chunk of the binary data.
  //  The 1st byte is at index 0.
  //  The output should be "02030405"
  offset := 2;
  numBytes := 4;
  WriteLn('chunk: ' + binData.GetEncodedChunk(offset,numBytes,'hex'));

  //  Copy the bytes to a StringBuilder using the base64url encoding
  sb := TStringBuilder.Create;
  binData.GetEncodedSb('base64url',sb);
  WriteLn('base64url: ' + sb.GetAsString());

  //  Remove a chunk from the binary data
  offset := 2;
  numBytes := 4;
  binData.RemoveChunk(offset,numBytes);
  //  The bytes remaining are 00,01,06,07,08,and 09
  WriteLn('after removing chunk: ' + binData.GetEncoded('hex'));


  binData.Free;
  sb.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.