Ich habe mir gerade die beiden funktionen Base64EncStr und Base64DecStr aus gammatesters
Unit Mem_Util angeguckt und mir ist aufgefallen, dass die scheinbar kein
Unicode können.
(͡° ͜ʖ ͡°) erg ibt etwas, was man nicht mit Base64DecStr zurückrechnen kann.
Delphi-Quellcode:
uses Mem_Util;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := '(͡° ͜ʖ ͡°)';
end;
function Base64Encode(const S: string): string;
begin
Result := Base64EncStr(S);
end;
function Base64Decode(const S: string): string;
begin
Result := Base64DecStr(S);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := Base64Encode(Edit1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := Base64Decode(Edit2.Text);
end;
gammatesters Base64EncStr ergibt: KD+wID8/ID+wKQ==
TNetencoding.Base64Encode ergibt: KM2hwrAgzZzKliDNocKwKQ==
Gibt es hier einen Trick? Innerhalb von Mem_Util sind string-Parameter als BString deklariert, was bei mir AnsiString ergibt.
Delphi-Quellcode:
{$ifdef BIT16}
{$ifdef V7Plus}
type
BString =
string[255];
{String of 8 bit characters}
pBString = ^BString;
char8 = char;
{8 bit characters}
pchar8 = pchar;
{$else}
type
BString =
string[255];
{String of 8 bit characters}
pBString = ^BString;
char8 = char;
{8 bit characters}
pchar8 = ^char;
{$endif}
{$else}
{$ifdef UNICODE}
type
BString = AnsiString;
{String of 8 bit characters}
pBString = pAnsiString;
char8 = AnsiChar;
{8 bit characters}
pchar8 = pAnsiChar;
{$else}
type
BString = AnsiString;
{String of 8 bit characters}
pBString = pAnsiString;
char8 = AnsiChar;
{8 bit characters}
pchar8 = pAnsiChar;
{$endif}
{$endif}
Ich möchte gerne diese Funktionen nutzen, da die doch weitaus schneller sind als die in der TNetEncoding
Unit.