Sample code for 30+ languages & platforms
Lazarus Pascal

Decode from Binary Encoding and Append String

Demonstrates how to decode from a binary encoding (base64, hex, url, etc.) and then append the decoded string to a Chilkat StringBuilder object.

Note: This example uses the new DecodeAndAppend method added in Chilkat v9.5.0.87.

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.StringBuilder;

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

procedure RunDemo;
var
  success: Boolean;
  nameWindows1252UrlEncoded: string;
  nameUtf8UrlEncoded: string;
  sb1: TStringBuilder;
  sb2: TStringBuilder;
  bEqual: Boolean;

begin
  success := False;

  //  We have the string "MÆRSK" in two forms:

  //  This is the URL encoding of the windows-1252 representation.
  nameWindows1252UrlEncoded := 'M%C6RSK';

  //  This is the URL encoding of the utf-8 representation.
  nameUtf8UrlEncoded := 'M%C3%86RSK';

  //  Note that the result of loading a string into a string object 
  //  is the same if we correctly specify the underlying charset encoding.
  //  In the above example, we have the same string, but in different charset encodings
  //  subsequently URL encoded.
  sb1 := TStringBuilder.Create;
  success := sb1.DecodeAndAppend(nameWindows1252UrlEncoded,'url','windows-1252');

  sb2 := TStringBuilder.Create;
  success := sb2.DecodeAndAppend(nameUtf8UrlEncoded,'url','utf-8');

  //  sb1 and sb2 both hold the same string.
  bEqual := sb1.ContentsEqualSb(sb2,True);
  WriteLn('bEqual = ' + bEqual);

  //  We can see the string is "MÆRSK" in both cases.
  WriteLn(sb1.GetAsString());
  WriteLn(sb2.GetAsString());


  sb1.Free;
  sb2.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.