Cuantos dolores de cabeza tuve con esto mismo, hasta que descubrí el funcionamiento de las propiedades NoDEcode, NoEncode.
Cada vez que pasas los datos a un stream/fichero o lo cargas, se recodifica la información y en algún caso se pierde.
Para que funcione correctamente y si no me equivoco tendrías que poner en
Código:
m1.NoEncode:=True;//creo que codifica cuando guarda
m1.SaveToFile('m1.txt');
stream := TMemoryStream.Create;
m1.SaveToStream(stream);
stream.Position := 0;
m2.NoDecode:=True;//creo que descodifica cuando lee
m2.LoadFromStream(stream);
m2.NoDecode:=True;
m2.SaveToFile('m2.txt');