[Lazarus-es] Problema con Base64

José Mejuto joshyfun en gmail.com
Lun Dic 12 13:48:16 CET 2016


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