Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar (https://www.delphipraxis.net/165315-base64-encode-decode-funktion-noch-nicht-basisfunktion-verfuegbar.html)

Bernhard Geyer 23. Dez 2011 10:25

Delphi-Version: XE2

Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
In XE2 habe ich nach einer Basis-Funktion für Base64 Codierung gesucht.
Im SOAP-Berich bin ich auf Funktionen gestoßen die aber mit TBytes arbeiten.

Gibt es in XE2 keine Entsprechung zu Base64Encode(In: (Ansi)String): (Ansi)String in der RTL?

Bummi 23. Dez 2011 10:38

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
EncdDecd.pas ??

Bernhard Geyer 23. Dez 2011 10:48

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Zitat:

Zitat von Bummi (Beitrag 1142867)
EncdDecd.pas ??

Soap.EncdDecd

Und wieso hat man das nicht in einem Packages das eher im Bereich RTL bzw. Allgemein/Basisfunktionalität liegt?
Will man mit dieser Unit arbeiten und würde Laufzeitpackages verwenden müsste man das SOAP-Package mitliefern.
Kann ja auch nicht sinn der sache sein sowas allgemeines (wird ja bei "normal" Web und XML auch benötigt).

Bummi 23. Dez 2011 10:52

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
ich bin noch bei XE (ohne 2) und es funktioniert nur sauber mit folgenden Overloads ....

Delphi-Quellcode:
function EncodeString(const Input: UTF8String): UTF8String; overload;
var
  InStr, OutStr: TStringStream;
begin
  InStr := TStringStream.Create(Input, TEncoding.UTF8);
  try
    OutStr := TStringStream.Create('', TEncoding.UTF8);
    try
      EncodeStream(InStr, OutStr);
      Result := OutStr.DataString;
    finally
      OutStr.Free;
    end;
  finally
    InStr.Free;
  end;
end;

function DecodeString(const Input: UTF8String): UTF8String;overload;
var
  InStr, OutStr: TStringStream;
begin
  InStr := TStringStream.Create(Input, TEncoding.UTF8);
  try
    OutStr := TStringStream.Create('', TEncoding.UTF8);
    try
      DecodeStream(InStr, OutStr);
      Result := OutStr.DataString;
    finally
      OutStr.Free;
    end;
  finally
    InStr.Free;
  end;
end;

Bernhard Geyer 23. Dez 2011 11:07

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Zitat:

Zitat von Bummi (Beitrag 1142869)
ich bin noch bei XE (ohne 2) und es funktioniert nur sauber mit folgenden Overloads ....

Mit den Overloads ist klar. Aber wieso im Namespace SOAP ...

Bummi 23. Dez 2011 11:22

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Frag mich nicht, ich habe kein XE2, also kein NameSpace

Uwe Raabe 23. Dez 2011 12:25

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1142872)
Zitat:

Zitat von Bummi (Beitrag 1142869)
ich bin noch bei XE (ohne 2) und es funktioniert nur sauber mit folgenden Overloads ....

Mit den Overloads ist klar. Aber wieso im Namespace SOAP ...

Ich glaube, Bernhard meint, warum diese Funktionalität im SOAP-Bereich (NameSpace) untergebracht ist und nicht in der RTL.

Bummi 23. Dez 2011 13:46

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
@Uwe Rabe
Danke, ich hatte verstanden unter XE2 hätte sich der Name geändert in der Syntax wir bei Generics.Collections.pas

Foxpro 2. Jul 2015 15:35

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Moin NG,

ich sitze seit gestern mit BASE64 rum und will das in XE2 zum laufen bringen, nun startet zwar das Programm und die Funktion schmeißt auch keine Fehler,
aber wie bekomme ich base64 dazu eine base64-codierte Datei auch zu schreiben?

@Bummi
könntest Du mir die Base64.pas die bei Dir läuft zukommen lassen?

Gruß an Alle und schon mal Danke vorab

p80286 2. Jul 2015 16:10

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Versuch es mal hiermit:http://www.delphipraxis.net/991-base...-decoding.html

Gruß
K-H

Foxpro 7. Jul 2015 16:15

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Hallo p80286

Danke läuft .... :-D

Foxpro 7. Jul 2015 16:17

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Hallo p80286,

Danke läuft ... :-D

Gruß
Michael

Bbommel 31. Jan 2017 09:31

AW: Base64 Encode/Decode-Funktion noch nicht in Basisfunktion verfügbar
 
Mal eine kleine Ergänzung zu diesem etwas älteren Thread hier, da einen der Gockel hierher schickt, wenn man nach "Base64 Delphi" sucht, was ich gestern getan habe.

In aktuellen Delphi-Versionen (zumindest bei mir in Delphi 10 Seattle - ab wann, weiß ich aber nicht) gibt es die gesuchte Funktionalität mittlerweile auch dort, wo sie eigentlich hingehört, also nicht irgendwo im Bereich SOAP, sondern in der Unit System.Netencoding. Dort gibt es die Klassen TNetEncoding, TBase64Encoding und weitere.

TNetEncoding ist die Basisklasse für die konkreten Kodierungsklassen, das heißt, wenn man etwas mit Base64 kodieren will, dann erstellt man sich dafür entweder eine Instanz von TBase64Encoding oder man nutzt die Class-Property "Bae64" von TNetEncoding.

Konkret:

Delphi-Quellcode:
function GetBase64 (aInStr: string): string;
begin
  Result:=TNetEncoding.Base64.Encode(aInStr);
end;
Alternativ kann auch von Stream zu Stream oder TBytes zu TBytes kodiert werden oder auch, besonders praktisch für mich gestern, direkt von TBytes zu String:

Delphi-Quellcode:
procedure DoSomethin;

var
  myBytes: TBytes;
  myBase: string;

begin
  [...] // irgendwas, wo das Bytes-Array gefüllt wird
  myBase:=TNetEncoding.Base64.EncodeBytesToString(myBytes);
  [...]
end;
So, ich hoffe, diese kleine Ergänzung erspart manchem, der per Google hier landet, eine kleine Ehrenrunde. ;) Bin immer mal wieder üebrrascht, was mittlerweile doch alles in Delphi eingebaut ist...

Bis denn
Bommel


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 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