I am using it- only I am not apparently using it RIGHT :S
My b64decode function is using BASE64's stream class to operate with
-it's purpose isn't to
do the decoding (BASE64 is meant to do that), but rather the
conversion process from string to stream -into base64 - back into
string.
Since the only outputs I can get from postgresql are strings - I need
to send a string into the base64decoder class and turn the data I read
back into a string again (the latter phase I could possibly skip
though - let me check).

A.J.

On 5/16/07, ik <[EMAIL PROTECTED]> wrote:
Hi,

Why not to use the FPC's unit of BASE64 ? it works on streams. Or am I
missing something ?

Ido

On 5/16/07, A.J. Venter <[EMAIL PROTECTED]> wrote:
> So - second attempt at implementing it... same sad result - only now
> the XPM fails as well...
>
> This is my now somewhat improved code... am I missing something
> extremely obvious here ?
> Function DecodeB64(S : String) : String;
> Procedure doNothing;
> Begin
> end;
> var
>   b64decoder: TBase64DecodingStream;
>   S1 : TSTringStream;
>   S2 : TStringStream;
> begin
>  S1 := TStringStream.Create(S);
>  S2 := TStringStream.Create('');
>   b64decoder := TBase64DecodingStream.Create(S1);
>   With B64Decoder Do
>         Begin
>         try
>                 S2.CopyFrom(B64Decoder,B64Decoder.Size);
>         Except
>                 DoNothing;
>         end;
>         end;
>
>     Result := S2.DataString;
>   S1.Free;
>   S2.Free;
>   b64decoder.Free;
> end;
>
> I'm stumped as to what it is I am doing wrong...
> Any ideas ?
>
> A.J.
> On 5/16/07, A.J. Venter <[EMAIL PROTECTED]> wrote:
> > A small update -
> > Don't ask me WHY - but get this - I take the exact same unchanged
> > code, and insert an XPM image.
> > It works perfectly.
> > I try a jpg or a png - and it fails.
> >
> > All I can imagine is that my b64decode function is broken - and that
> > the breakage is ONLY affecting true binary sources, XPM (like my test
> > program) is actually an ASCII format - so it survives the process
> > intact - while png etc. fails.
> >
> > So - I guess I start hacking my b64decode function.
> >
> > A.J.
> >
> > On 5/16/07, A.J. Venter <[EMAIL PROTECTED]> wrote:
> > > Hi again all
> > > Based on everyone's advice, I chose to go with base64 encoding - and
> > > started coding.
> > >
> > > Right now I am quite successfully:
> > > 1) Reading the image
> > > 2) Encoding it to base64 (using the encodeb64 function from the examples)
> > > 3) Storing the result in the database (I THINK it's storing right)
> > >
> > > Later I then select it, run it through decodeb64 (my own function
> > > based on the above, code below) and then save this string to a file -
> > > a file that has the right extension (the reason for this is actually
> > > good - remote DB access, and I want to cache the images and only
> > > download if they changed)
> > > Finally - a simple TImage.Picture.LoadFromFile is meant to handle the
> > > last bit... only it doesn't - somewhere along the way my data is
> > > corrupted - the files being dumped differ from the orriginals - yet
> > > oddly they are the exact same size.
> > > I know we're not supposed to include attachments on the list, so for
> > > now I didn't but if I may, I would like to add (assuming anybody says
> > > it would be usefull:
> > > 1) An orriginal image
> > > 2) A post database process filedump of the same image
> > > 3) The (apparently) base64 encoded database entry for said image
> > >
> > > I can say that I tested my b64encode/b64decode functions with a simple
> > > program that lets me enter string, encodes it, writes that, decodes
> > > THAT and writes it back (which should match the orriginal input) -
> > > that at least seems to work fine.
> > >
> > > Any idea where the corruption is coming from ? All help, as always,
> > > greatly appreciated.
> > >
> > > Relevant code snippets:
> > > Function DecodeB64(S : String) : String;
> > > Procedure doNothing;
> > > Begin
> > > end;
> > > var
> > >   b64decoder: TBase64DecodingStream;
> > >   S1 : TSTringStream;
> > >   S2 : String;
> > >   InputStream: TStream;
> > >   IsEnd: Boolean;
> > >
> > > begin
> > >  S1 := TStringStream.Create(S);
> > >  S2 := '';
> > >   b64decoder := TBase64DecodingStream.Create(S1);
> > > While not B64Decoder.EOF do
> > >         Begin
> > >         try
> > >                 S2 := S2+(CHR(B64Decoder.ReadByte));
> > >         except
> > >                 doNothing;
> > >         end;
> > >         end;
> > >
> > >     Result := S2;
> > >   b64decoder.Free;
> > > end;
> > >
> > > Image Saving:
> > > Procedure SaveBTNClick(Sender:TObject); //Snipped
> > > Var B64 : String;
> > >     S :TStringList;
> > > Begin
> > >       S := TStringList.Create;
> > >       S.LoadFromFile(ImgFileName);
> > >       B64 := EncodeB64(S.Text);
> > >      Ad.SaveData(add_desc.text,b64);
> > > end;
> > >
> > >
> > > Procedure TZC_Advertising.SaveData(Description,Data:String);
> > > Var Q : String;
> > > Begin
> > >  Q := 'UPDATE advertising SET data='+QS(Data)+'
> > > timestamp='+QS('NOW')+' WHERE description = '+QS(Description)+' ;';
> > >    FResult := ZC_DBQuery(Q);
> > > //Notes: FResult is a PPGResult, ZC_DBQuery is a very well tested
> > > wrapper function
> > > //QS = QuoteString - it wraps the input in ''
> > > end;
> > >
> > > Image Loading:
> > > Function TZC_Advertising.GetData(Description:String):String;
> > > Var
> > >     S : String;
> > > Begin
> > > FResult := ZC_DBQuery('SELECT data FROM advertising WHERE description
> > > = '+QS(Description)+';');
> > > If PqNTuples(Fresult) >= 0 then
> > > begin
> > >    S := PQGetValue(FResult,0,0);
> > >    GetData:=DecodeB64(S);
> > > end else
> > >    GetData := '';
> > > end;
> > >
> > > //In the app:
> > > IName := 
GetTempDir+Ad.GetTimeStamp(add_desc.text)+Ad.GetExt(add_desc.text);
> > > Data := TStringList.Create;
> > > Data.Add(Ad.GetData(add_desc.text));
> > > Data.SaveToFile(Iname);
> > > ad_Img.Picture.LoadFromFile(Iname);
> > > Data.Free;
> > >
> > > --
> > > 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
> >
>
>
> --
> 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
>


--
http://ik.homelinux.org/

_________________________________________________________________
     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

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

Reply via email to