Ahora si, leyendo los ejemplos del paquete fcl-base, entendi el funcionamiento:<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>var<br>IsEnd:boolean;<br>buffer1 : TStringStream;<br>buffer2 : TStringStream;<br>
EncodeStream : TBase64EncodingStream;<br>begin<br> buffer1 := TStringStream.create('');<br> buffer2 := TStringStream.create('');<br><br> EncodeStream := TBase64EncodingStream.Create(buffer1);<br><br>
buffer2.WriteString(Utf8ToAnsi(Memo1.Lines.Text));<br><br> IsEnd := False;<br> buffer2.Position := 0;<br> //EncodeStream.Write(buffer2, buffer2.size);<br> while not IsEnd do<br> try<br> EncodeStream.WriteByte(Buffer2.ReadByte);<br>
except<br> on e: EStreamError do<br> IsEnd := True;<br> end;<br><br> buffer1.Position := 0;<br> Memo2.Lines.Text := AnsiToUtf8(buffer1.DataString);<br><br> EncodeStream.free;<br> buffer1.free;<br>
buffer2.free;<br>end; <br><br>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.<br>
<br>Saludos.<br><br><div class="gmail_quote">El 3 de octubre de 2009 00:09, Rafael Bidegain <span dir="ltr"><<a href="mailto:r.bidegain@gmail.com">r.bidegain@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hola!<br>
<br>
una vez mas, les pido una opinion para que me ayuden a comprender que<br>
estoy haciendo mal.<br>
<br>
tengo un formulario con (use base64 además de lo usual)<br>
en el formulario tengo dos componentes TMemo y un boton<br>
en el primer tmemo el texto cargado es Memo1 (el valor por defecto) en<br>
el segundo tmemo también tiene el valor por defecto.<br>
<br>
en el botón tengo el siguiente código<br>
<br>
<br>
procedure TForm1.Button1Click(Sender: TObject);<br>
var<br>
buffer : TMemoryStream;<br>
EncodeStream : TBase64EncodingStream;<br>
begin<br>
buffer := TMemoryStream.create();<br>
EncodeStream := TBase64EncodingStream.Create(buffer);<br>
Memo1.Lines.SaveToStream(buffer);<br>
<br>
buffer.position := 0;<br>
EncodeStream.Write(buffer, buffer.size);<br>
<br>
buffer.position := 0;<br>
Memo2.Lines.LoadFromStream(buffer);<br>
<br>
EncodeStream.free;<br>
buffer.free;<br>
end;<br>
<br>
el problema está en que cada vez que presiono el botón obtengo un<br>
valor distinto.<br>
por ejemplo estos:<br>
<br>
wHGkt4CZ<br>
gHSkt4CZ<br>
gHWkt4CZ<br>
AHakt4CZ<br>
wHSkt4CZ<br>
<br>
he notado que algunas veces los valores que se repiten son solo tres...<br>
<br>
<br>
--<br>
Rafael Bidegain<br>
<br>
Ya que los cuerdos no hablan, hablará el loco.<br>
(The Fool, Padraic Pearse)<br>
<br>
_______________________________________________<br>
Lazarus-es mailing list<br>
<a href="mailto:Lazarus-es@lists.lazarus.freepascal.org">Lazarus-es@lists.lazarus.freepascal.org</a><br>
<a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Carlos Germán Tejero<br>