[Lazarus-es] Problema con Base64

Antonio Evora aevorar en gmail.com
Mie Dic 14 11:20:34 CET 2016


Excelente explicación. Yo pensaba que al pedirle la cadena resultante 
(con DataString) era interpretado como que el proceso había concluido, y 
visto lo visto nada mas lejos de la realidad ;-)

Un cordial saludo y gracias reiteradas.


El 12/12/16 a las 13:48, José Mejuto via Lazarus-es escribió:
> El 12/12/2016 a las 9:12, Antonio Evora via Lazarus-es escribió:
>> Efectivamente José, todo solucionado!!!!
>>
>> Mil gracias.
>>
>> PD: ¿Ese "Flush" no debería de hacerlo internamente cuando le pido el
>> DataString (con o sin persistencia)?
>
> Hola,
>
> No porque un stream es un flujo continuo de datos y DataString sólo 
> pertenece  TStringStream y es una capa interna de datos. Podría 
> hacerlo automáticamente el stream de encode64 al pedir el DataString, 
> pero la verdad es que todos los streams funcionan del mismo modo, y 
> todos aquellos que necesitan que les indiques el final usan un flush. 
> Si lo hiciera automáticamente también tendría que hacerlo cada vez que 
> haces un "Read", "CopyFrom", etc, lo cual complicaría sobremanera el 
> stream y podría generar situaciones extrañas, como (pseudo código):
>
> Stream.Write('A',1);
> Stream.Position:=0;
> Stream.Read(A,1);
> Stream.Position:=0;
> Stream.Write('B',1);
> Stream.Position:=0;
> Stream.Read(B,Stream.size);
>
> C:=A+B;
>
> Esperamos que C sea igual a "AB" pero en este caso sería algo como:
>
> "A===B==="
>
> Si se hiciera el flush automático.
>



Más información sobre la lista de distribución Lazarus-es