[Lazarus-es] comportamiento erratico de TBase64EncodingStream

Rafael Bidegain r.bidegain en gmail.com
Dom Oct 4 18:15:37 CEST 2009


El día 4 de octubre de 2009 12:40, JoshyFun <joshyfun en gmail.com> escribió:
> Hello Rafael,
>
> Sunday, October 4, 2009, 5:12:20 PM, you wrote:
>
>>> EncodeStream.Write(buffer2.Memory^, buffer2.size);
> RB> Esto no funciona en el ejemplo de Carlos, pero si funciona en el mio.
>
> La diferencia entre los dos que te he propuesto y la de Carlos es que
> mis dos propuestas hacen la conversión toda en una sola llamada,
> mientras que la de Carlos lo hace byte a byte, lo que en buena medida
> debe de ser por lo menos unas 20 veces más lento.
tengo claro que el segundo ejemplo de carlos es mas lento.
pero tus soluciones no se pueden aplicar exactamente al ejemplo, de Carlos.
una funciona en el ejemplo de Carlos y la otra puede hacerla funcionar
con mi ejemplo.


>
> Cual es el código que te da un encode diferente ?
este:

procedure TForm1.Button1Click(Sender: TObject);
var
buffer       : TMemoryStream;
EncodeStream : TBase64EncodingStream;
begin
     buffer := TMemoryStream.create();
     Memo1.Lines.SaveToStream(buffer);
     EncodeStream := TBase64EncodingStream.Create(buffer);

     buffer.position := 0;
     EncodeStream.Write(buffer.Memory^, buffer.size);

     buffer.position := 0;
     Memo2.Lines.LoadFromStream(buffer);

     EncodeStream.free;
     buffer.free;
end;

-- 
Rafael Bidegain

Ya que los cuerdos no hablan, hablará el loco.
(The Fool, Padraic Pearse)




More information about the Lazarus-es mailing list