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