Forráskód Böngészése

* procedural encode/decode base64. Useful when base64ing hashes to XMLs etc.

git-svn-id: trunk@16772 -
marco 14 éve
szülő
commit
49ed563e1d
1 módosított fájl, 50 hozzáadás és 0 törlés
  1. 50 0
      packages/fcl-base/src/base64.pp

+ 50 - 0
packages/fcl-base/src/base64.pp

@@ -87,6 +87,9 @@ type
   EBase64DecodingException = class(Exception)
   end;
 
+function EncodeStringBase64(const s:string):String;
+function DecodeStringBase64(const s:string):String;
+
 implementation
 
 uses
@@ -420,5 +423,52 @@ begin
   raise EStreamError.Create('Invalid stream operation');
 end;
 
+function DecodeStringBase64(const s:string):String;
+
+var 
+  Instream, 
+  Outstream : TStringStream;
+  Decoder   : TBase64DecodingStream;
+begin
+  Instream:=TStringStream.Create(s);
+  try
+    Outstream:=TStringStream.Create('');
+    try 
+      Decoder:=TBase64DecodingStream.Create(Instream,bdmMIME);
+      try
+         Outstream.CopyFrom(Decoder,Decoder.Size);
+         Outstream.Position:=0;
+         Result:=Outstream.ReadString(Outstream.Size);
+      finally
+        Decoder.Free;
+        end;
+    finally 
+     Outstream.Free;
+     end;
+  finally 
+    Instream.Free;
+    end;
+end;
+
+function EncodeStringBase64(const s:string):String;
+
+var
+  Outstream : TStringStream;
+  Encoder   : TBase64EncodingStream;
+begin
+  Outstream:=TStringStream.Create('');
+  try
+    Encoder:=TBase64EncodingStream.create(outstream);
+    try 
+      Encoder.Write(s[1],Length(s));
+    finally 
+      Encoder.Free;
+      end;
+    Outstream.Position:=0;
+    Result:=Outstream.ReadString(Outstream.Size);
+  finally
+    Outstream.free;
+    end;
+end;
 
 end.