Just some more on this - I have no upgraded to the 2.3.1 snapshot,
The test program still fails - but I did another test, and indeed, xpm
format works, - png does not, comparing a head -n 5 on the source and
the decoded files show clear differences - though I am not sure what
the pattern would be.
There is definitely a "decodeing" that happened - but it's not right.

Bram - would you prefer if I send you the actual source files offlist ?

A.J.

On 5/16/07, A.J. Venter <[EMAIL PROTECTED]> wrote:
I am using version 2.0.4 at this point - should I upgrade ?

I did a program as you suggested. It did confirm that it's NOT the
database which is
at fault. And my testdata is attached, yah.png is the source image I
tested with, blah0000.tmp is the one that was generated (and doesn't
open).
The program is really simple - I just dumped a timage, a button and a
topenpicturedialog on a form, and stuck this in as the button click
event:

//No try/except's here (I'm just testing an idea after all)

Var S1,S2,S3: TStringList;
    FN : String;
begin
S1 := TStringList.Create;
S2 := TStringList.Create;
S3 := TStringList.Create;
  If OpenPictureDialog1.Execute then
     Begin
          S1.LoadFromFile(OpenPictureDialog1.FileName);
          S2.Add(EncodeB64(S1.Text));
          S3.Add(DecodeB64(S2.Text));
          FN :=
GetTempFileName(GetTempDir,'blah')+ExtractFileExt(OpenPictureDialog1.FileName);
          ShowMessage(FN);
          S1.SaveToFile(FN);
          Image1.Picture.LoadFromFile(FN);
     end;
end;

And here is the content of unit simpleb64:
Function DecodeB64(S:String):String;

var
  b64decoder: TBase64DecodingStream;
  S1 : TSTringStream;
  S2 : TStringStream;
begin
 S1 := TStringStream.Create(S);
 S2 := TStringStream.Create(S);
   b64decoder := TBase64DecodingStream.Create(S1);
      Try
        S2.CopyFrom(b64decoder,b64decoder.Size);
      except
            //   blah
      end;
  S1.Free;
  Result := S2.DataString;
  S2.Free;
  b64decoder.Free;
end;

Function EncodeB64(S : String) : String;

Var
  S1,S2 : TStringStream;

begin
  S1:=TStringStream.Create(S);
  Try
    S1.Position:=0;
    S2:=TStringStream.Create('');
    Try
      With TBase64EncodingStream.Create(S2) do
        Try
          CopyFrom(S1,S1.Size);
        Finally
          Free;
        end;
      Result:=S2.DataString;
    finally
      S2.Free;
    end;
 finally
   S1.Free;
 end;
end;

On 5/16/07, Bram Kuijvenhoven <[EMAIL PROTECTED]> wrote:
> Hi A.J.,
>
> If you create a standalone demo program that:
> - reads in an image file
> - calls your Base64Encode function
> - next calls your Base64Decode function (i.e. leave out the DB stuff)
> - writes the result to an output file (which is damaged)
> and attach the image file, then I will take a look at it.
>
> And: which version of FPC do you use? Sometime ago I sent a patch for 
TBase64DecodingStream, which is in 2.1.x and trunk now, but not in 2.0.4.
>
> Regards,
>
> Bram
>
> _________________________________________________________________
>      To unsubscribe: mail [EMAIL PROTECTED] with
>                 "unsubscribe" as the Subject
>    archives at http://www.lazarus.freepascal.org/mailarchives
>


--
A.J. Venter
CEO - OutKast Solutions C.C.
http://www.outkastsolutions.co.za
Cell: +27 83 455 9978
Fax: +27 21 413 2800
Office: +27 21 591 6766




--
A.J. Venter
CEO - OutKast Solutions C.C.
http://www.outkastsolutions.co.za
Cell: +27 83 455 9978
Fax: +27 21 413 2800
Office: +27 21 591 6766

_________________________________________________________________
    To unsubscribe: mail [EMAIL PROTECTED] with
               "unsubscribe" as the Subject
  archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to