Sample code for 30+ languages & platforms
Lazarus Pascal

Append Big-Endian or Little-Endian Integers

Demonstrates how to append integers in big-endian or little-endian byte order to a BinData.

Note: This example requires Chilkat v9.5.0.77 or greater.

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;

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

procedure RunDemo;
var
  success: Boolean;
  bd: TBinData;
  x: Integer;
  littleEndian: Boolean;

begin
  success := False;

  bd := TBinData.Create;

  //  The hex value of decimal 123456789 is 0x075BCD15
  x := 123456789;

  //  Appending little-endian causes bytes to be
  //  appended in the order 0x15, 0xCD, 0x5B, 0x07
  littleEndian := True;
  success := bd.AppendInt4(x,littleEndian);

  WriteLn(bd.GetEncoded('hex'));
  //  Output is: 15CD5B07

  //  Now append the same integer in big-endian byte order.
  //  Appending bit-endian causes bytes to be
  //  appended in the order 0x07, 0x5B, 0xCD, 0x15
  littleEndian := False;
  bd.AppendInt4(x,littleEndian);

  WriteLn(bd.GetEncoded('hex'));
  //  bd now contains: 15CD5B07075BCD15

  //  -------------------------------------------
  //  Now do the same thing with 16-bit integers
  bd.Clear();

  //  1234 decimal = 0x04D2 hex.
  x := 1234;

  littleEndian := True;
  bd.AppendInt2(x,littleEndian);

  WriteLn(bd.GetEncoded('hex'));
  //  Output is: D204

  littleEndian := False;
  bd.AppendInt2(x,littleEndian);

  WriteLn(bd.GetEncoded('hex'));
  //  Output is now: D20404D2


  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.