Ich komme mit den WE Units mal wieder nicht klar. Und ne, andere möchte ich nicht nutzen.
Wie enkodiert man einen String in Base64 mit den WE Units?
Der Funktionskopf
Delphi-Quellcode:
procedure EncodeBase64(psrc,pdest: pointer; lsrc,ldest: word; var LA: word);
{-Base64 encode src to dest, LA result length of dest string}
Src habe ich. Dest scheint nur ein leerer PChar zu sein. lsrc also die Länge von Source habe ich auch. Aber woher soll ich die ldst Länge von dest wissen ?!
Das hier scheint eher nicht zu funktionieren
Delphi-Quellcode:
function Base64(const Text: PChar): string;
var
Dest: PChar;
L: Word;
begin
EncodeBase64(Text, Dest, Length(Text), Length(Dest), L);
Result := Dest;
end;
Du mußt der Routine den Speicher übergeben, den sie füllen soll, z. B.
Dest: String;
begin
SetLength(Dest, Lenght(Text)*3);
EncodeBase64(Test, @Dest[1]), length(text), length(dest), L);
L sagt Dir dann, wieviel des Dest-Puffers wirklich verwendet wurde.
Cave
Unicode! Keine Ahnung ob die Bibliothek mit
ANSI oder widechars arbeitet.