Recent

Author Topic: Problem with TBase64EncodingStream  (Read 6276 times)

Kiki21

  • Newbie
  • Posts: 2
Problem with TBase64EncodingStream
« on: October 28, 2010, 06:27:42 pm »
Dear, Professionals
I want to add in WordML a picture. In WordML picture is encoded base64 (in tags 'binData'). But when I do such code in Lazarus:
Code: [Select]
var
  B64: TBase64EncodingStream;
  s: TFileStream;
  st: TSTringStream; 
begin
  s := TFileStream.Create('pic.png',fmOpenRead);
  st := TSTringStream.Create('');
  try
    B64 := TBase64EncodingStream.Create(st);
    try
      B64.WriteBuffer(s, s.Size);
      form2.Memo1.Lines.Add(st.DataString);
    finally
      B64.Free;
    end;
  finally
    s.Free;
    st.Free;
  end;   
end;
I receive such base64
Quote
GGAGAGAPBgAAAAAAMsAAANCATADoZQkA8Pn7AVTIQQAgSwwAwARIAgD6+wFRe0wA0IBMAMAESAIQ+vsBCIFMAMAESAIU/PsBKPz7AXm ... (and others)
But for this picture MSWord do such base64
Quote
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAABGdBTUEAAK/INwWK6QAAABl0RVh0
U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFZUExURdlUVP1cXMlRUf5cXK1LS/tbW/pb
W81SUqpLS7FMTNNTU6xLS8pRUflbW9JTU89SUvhbW9FTU/xbW8xSUstRUfVaWtBTU/daWvZaWu1Y ... (and others)
Certainly WordML with base64 from TBase64EncodingStream doesn't work. Please explain as to correct this base64?

P.S. It very much is very necessary for me !  :'( And sorry for my bad English.

jixian.yang

  • Full Member
  • ***
  • Posts: 173
Re: Problem with TBase64EncodingStream
« Reply #1 on: October 29, 2010, 01:36:47 am »
The Lazarus unit base64 is correct.

try this:

var
  B64: TBase64EncodingStream;
  s: TFileStream;
  st: TSTringStream;
  TempStr: String;
  ccount: integer;
begin
  if OpenDialog1.Execute then
    s := TFileStream.Create(OpenDialog1.FileName,fmOpenRead)
  else
    Exit;
  st := TSTringStream.Create('');
  try
    B64 := TBase64EncodingStream.Create(st);
    try
      Memo1.Lines.Clear;
  //    B64.WriteBuffer(s, s.Size);
      SetLength(TempStr, s.Size);
      s.Read(tempStr[1], s.Size);
      ccount := s.Size;
      B64.Write(tempStr[1], ccount);
      ShowMessage(tempstr);
      Memo1.Lines.Add(st.DataString);
    finally
      B64.Free;
    end;
  finally
    s.Free;
    st.Free;
  end;     


Kiki21

  • Newbie
  • Posts: 2
Re: Problem with TBase64EncodingStream
« Reply #2 on: October 29, 2010, 03:32:07 am »
Thank you very much!!! It's work  :D

 

TinyPortal © 2005-2018