Browse Source

* Added flush to TBase64Encoder

git-svn-id: trunk@16450 -
michael 14 years ago
parent
commit
10f25d6605
1 changed files with 14 additions and 2 deletions
  1. 14 2
      packages/fcl-base/src/base64.pp

+ 14 - 2
packages/fcl-base/src/base64.pp

@@ -38,7 +38,7 @@ type
   public
   public
     constructor Create(ASource: TStream);
     constructor Create(ASource: TStream);
     destructor Destroy; override;
     destructor Destroy; override;
-
+    Function Flush : Boolean;
     function Write(const Buffer; Count: Longint): Longint; override;
     function Write(const Buffer; Count: Longint): Longint; override;
     function Seek(Offset: Longint; Origin: Word): Longint; override;
     function Seek(Offset: Longint; Origin: Word): Longint; override;
   end;
   end;
@@ -129,7 +129,8 @@ begin
   inherited Create(ASource);
   inherited Create(ASource);
 end;
 end;
 
 
-destructor TBase64EncodingStream.Destroy;
+function TBase64EncodingStream.Flush : Boolean;
+
 var
 var
   WriteBuf: array[0..3] of Char;
   WriteBuf: array[0..3] of Char;
 begin
 begin
@@ -141,6 +142,8 @@ begin
         WriteBuf[2] := '=';
         WriteBuf[2] := '=';
         WriteBuf[3] := '=';
         WriteBuf[3] := '=';
         Source.Write(WriteBuf, 4);
         Source.Write(WriteBuf, 4);
+        Result:=True;
+        Inc(TotalBytesProcessed,2);
       end;
       end;
     2: begin
     2: begin
         WriteBuf[0] := EncodingTable[Buf[0] shr 2];
         WriteBuf[0] := EncodingTable[Buf[0] shr 2];
@@ -148,8 +151,17 @@ begin
         WriteBuf[2] := EncodingTable[(Buf[1] and 15) shl 2];
         WriteBuf[2] := EncodingTable[(Buf[1] and 15) shl 2];
         WriteBuf[3] := '=';
         WriteBuf[3] := '=';
         Source.Write(WriteBuf, 4);
         Source.Write(WriteBuf, 4);
+        Result:=True;
+        Inc(TotalBytesProcessed,1);
       end;
       end;
+  else
+    Result:=False;
   end;
   end;
+end;
+
+destructor TBase64EncodingStream.Destroy;
+begin
+  Flush;
   inherited Destroy;
   inherited Destroy;
 end;
 end;