Sample code for 30+ languages & platforms
Delphi DLL

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 Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, StringBuilder;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
nameWindows1252UrlEncoded: PWideChar;
nameUtf8UrlEncoded: PWideChar;
sb1: HCkStringBuilder;
sb2: HCkStringBuilder;
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 := CkStringBuilder_Create();
success := CkStringBuilder_DecodeAndAppend(sb1,nameWindows1252UrlEncoded,'url','windows-1252');

sb2 := CkStringBuilder_Create();
success := CkStringBuilder_DecodeAndAppend(sb2,nameUtf8UrlEncoded,'url','utf-8');

// sb1 and sb2 both hold the same string.
bEqual := CkStringBuilder_ContentsEqualSb(sb1,sb2,True);
Memo1.Lines.Add('bEqual = ' + IntToStr(Ord(bEqual)));

// We can see the string is "MÆRSK" in both cases.
Memo1.Lines.Add(CkStringBuilder__getAsString(sb1));
Memo1.Lines.Add(CkStringBuilder__getAsString(sb2));

CkStringBuilder_Dispose(sb1);
CkStringBuilder_Dispose(sb2);

end;