AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie benutzt man Wolfgang Erhardts Base64 Unit?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie benutzt man Wolfgang Erhardts Base64 Unit?

Ein Thema von DieDolly · begonnen am 15. Jul 2019 · letzter Beitrag vom 16. Jul 2019
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Wie benutzt man Wolfgang Erhardts Base64 Unit?

  Alt 15. Jul 2019, 17:27
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;

Geändert von DieDolly (15. Jul 2019 um 17:32 Uhr)
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
711 Beiträge
 
Delphi 12 Athens
 
#2

AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?

  Alt 15. Jul 2019, 17:52
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.
Peter Below
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#3

AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?

  Alt 15. Jul 2019, 17:59
SetLength(Dest, Lenght(Text)*3); Ist die Multiplikation mit 3 beabsichtigt und warum genau 3?

Zitat:
System.SetLength(Dest, Length(Text) * 3);
Zitat:
[dcc32 Fehler] E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
Den Fehler hatte ich mit SetLength auch noch nie.

Geändert von DieDolly (15. Jul 2019 um 18:02 Uhr)
  Mit Zitat antworten Zitat
jottkaerr

Registriert seit: 2. Jul 2007
Ort: Tuttlingen
81 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?

  Alt 15. Jul 2019, 18:13
Zitat:
System.SetLength(Dest, Length(Text) * 3);
Zitat:
[dcc32 Fehler] E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
Den Fehler hatte ich mit SetLength auch noch nie.
Hast Du den Typ von Dest auf String geändert?
Jürgen Krämer
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?

  Alt 15. Jul 2019, 18:15
Ja aber da kommt nur Chinesisch am Ende bei raus.
Delphi-Quellcode:
// 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;
Aus ABD sollte eigentlich QUJD werden.
  Mit Zitat antworten Zitat
jottkaerr

Registriert seit: 2. Jul 2007
Ort: Tuttlingen
81 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: Wie benutzt man Wolfgang Erhardts Base64 Unit?

  Alt 15. Jul 2019, 19:09
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.
Jürgen Krämer
Sometimes I think the surest sign that intelligent life exists elsewhere
in the universe is that none of it has tried to contact us. (Calvin)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:58 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 by Thomas Breitkreuz