Lazarus Pascal
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
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.