[Lazarus-es] comportamiento erratico de TBase64EncodingStream
Carlos German Tejero
german_tejero en yahoo.com.ar
Dom Oct 4 00:15:05 CEST 2009
Ahora si, leyendo los ejemplos del paquete fcl-base, entendi el
funcionamiento:
procedure TForm1.Button1Click(Sender: TObject);
var
IsEnd:boolean;
buffer1 : TStringStream;
buffer2 : TStringStream;
EncodeStream : TBase64EncodingStream;
begin
buffer1 := TStringStream.create('');
buffer2 := TStringStream.create('');
EncodeStream := TBase64EncodingStream.Create(buffer1);
buffer2.WriteString(Utf8ToAnsi(Memo1.Lines.Text));
IsEnd := False;
buffer2.Position := 0;
//EncodeStream.Write(buffer2, buffer2.size);
while not IsEnd do
try
EncodeStream.WriteByte(Buffer2.ReadByte);
except
on e: EStreamError do
IsEnd := True;
end;
buffer1.Position := 0;
Memo2.Lines.Text := AnsiToUtf8(buffer1.DataString);
EncodeStream.free;
buffer1.free;
buffer2.free;
end;
Aparecera una excepcion EStreamError cuando alcance el fin del stream, no te
hagas problema y dale continuar y veras por fin el resultado. Se puede hacer
de otras formas, este es un buen comienzo.
Saludos.
El 3 de octubre de 2009 00:09, Rafael Bidegain <r.bidegain en gmail.com>escribió:
> Hola!
>
> una vez mas, les pido una opinion para que me ayuden a comprender que
> estoy haciendo mal.
>
> tengo un formulario con (use base64 además de lo usual)
> en el formulario tengo dos componentes TMemo y un boton
> en el primer tmemo el texto cargado es Memo1 (el valor por defecto) en
> el segundo tmemo también tiene el valor por defecto.
>
> en el botón tengo el siguiente código
>
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> buffer : TMemoryStream;
> EncodeStream : TBase64EncodingStream;
> begin
> buffer := TMemoryStream.create();
> EncodeStream := TBase64EncodingStream.Create(buffer);
> Memo1.Lines.SaveToStream(buffer);
>
> buffer.position := 0;
> EncodeStream.Write(buffer, buffer.size);
>
> buffer.position := 0;
> Memo2.Lines.LoadFromStream(buffer);
>
> EncodeStream.free;
> buffer.free;
> end;
>
> el problema está en que cada vez que presiono el botón obtengo un
> valor distinto.
> por ejemplo estos:
>
> wHGkt4CZ
> gHSkt4CZ
> gHWkt4CZ
> AHakt4CZ
> wHSkt4CZ
>
> he notado que algunas veces los valores que se repiten son solo tres...
>
>
> --
> Rafael Bidegain
>
> Ya que los cuerdos no hablan, hablará el loco.
> (The Fool, Padraic Pearse)
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
--
Carlos Germán Tejero
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20091003/8509f524/attachment-0002.html>
More information about the Lazarus-es
mailing list