![]() |
Wie benutzt man Wolfgang Erhardts Base64 Unit?
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:
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 ?!
procedure EncodeBase64(psrc,pdest: pointer; lsrc,ldest: word; var LA: word);
{-Base64 encode src to dest, LA result length of dest string} 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; |
AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?
Zitat:
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. |
AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?
Delphi-Quellcode:
Ist die Multiplikation mit 3 beabsichtigt und warum genau 3?
SetLength(Dest, Lenght(Text)*3);
Zitat:
Zitat:
|
AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?
Zitat:
|
AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?
Ja aber da kommt nur Chinesisch am Ende bei raus.
Delphi-Quellcode:
Aus ABD sollte eigentlich QUJD werden.
// Text: string
var Dest: string; L: Word; begin System.SetLength(Dest, Length(Text) * 3); EncodeBase64(@Text[1], @Dest[1], Length(Text), Length(Dest), L); Result := Dest; end; |
AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?
Ist Text immer noch ein PChar? Dann kannst Du ihn direkt verwenden. Mit @Text[1] holst Du dir sonst einen Zeiger auf das zweite Zeichen.
|
AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?
Delphi-Quellcode:
Nur so zur Info:
function EncodeStringUtf8Base64(const Text: string): string;
var bufferIn: TArray<Byte>; outstr:AnsiString; Len: word; begin // wir brauchen ein buffer mit bytes bufferIn := TEncoding.UTF8.GetBytes(Text); // die ausgabe erfolgt als ansistring SetLength(outstr, Length(bufferIn)*3); // aufruf der funktion base2n.EncodeBase64(@bufferIn[0], PAnsiChar(outstr), Length(bufferIn), Length(outstr), Len); // länge des outstr setzen SetLength(outstr, Len); // ausgabe als string Result := string(outstr); end; Mit Base64 werden binäre Daten (Bytes) in einem 7-bit ASCII-Text dargestellt (bzw. alle verwendeten Zeichen gehören in die Menge der 7-bit ASCII Zeichen). Nicht mehr, nicht weniger. |
AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?
Zu dem
Delphi-Quellcode:
:
setlength
Es werden 2 Eingabebytes in 3 Ausgabebytes umgesetzt darum sollte das eigentlich
Delphi-Quellcode:
lauten. Ausserdem ein String als Eingabe für binäre Daten ist freundlich formuliert fehlerträchtig.
outlength:=((length(instring)*sizeof(char)+1) shr 1) *3
Gruß K-H |
AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?
Du hast zwar gesagt du willst keine andere Unit nutzen... auch nicht die, die bei Delphi dabei ist?
Delphi-Quellcode:
Du brauchst keine externe Unit und die Funktionen sind einfach aufzurufen.
uses
System.NetEncoding; var base64: String; begin base64 := TNetEncoding.Base64.Encode(Text); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz