diff options
| author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-01-16 12:09:35 +0000 |
|---|---|---|
| committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2011-01-16 12:09:35 +0000 |
| commit | 90e1274600df2975f2c6fa86c23c37f6c722c09f (patch) | |
| tree | fa1642835535b47b28a0a1a1bfda9f902c014cd1 /packages/fcl-base | |
| parent | 6eca793b9426b648a21d11fc29edac69cae36dec (diff) | |
| download | fpc-90e1274600df2975f2c6fa86c23c37f6c722c09f.tar.gz | |
* procedural encode/decode base64. Useful when base64ing hashes to XMLs etc.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@16772 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-base')
| -rw-r--r-- | packages/fcl-base/src/base64.pp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/packages/fcl-base/src/base64.pp b/packages/fcl-base/src/base64.pp index 3498b08e41..cc6cce8673 100644 --- a/packages/fcl-base/src/base64.pp +++ b/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. |
