PDA

Ver la Versión Completa : Pasar TMemorystream a string


modulay
27-09-2007, 18:00:51
Hola amigos.
Tengo un TMemorystream cuyos bytes contienen los valores ascii de una cadena de texto que quiero poder volcar sobre un memo.
He probado con pchar y alguna cosa de estas pero no me rula bien,no se si estaré haciendo algo mal.
¿cómo sería la forma adecuada de conseguir un tipo string con el contenido de dicho stream?
Gracias

seoane
27-09-2007, 18:24:27
¿Y el metodo LoadFromStream del TMemo? :confused:

Mick
27-09-2007, 18:28:01
// A un String
SetLength(Str,MemoryStream.Size);
MemoryStream.Write( PChar(Str)^, MemoryStream.Size);



// A un memo
Memo1.Lines.LoadFromStream(MemoryStream);



Saludos

modulay
28-09-2007, 20:48:18
Gracias amigos.
El volcado directo sobre el string no me funciona...al representar el contenido de dicho string,a veces muestra los valores ascii en hexadecimal,a veces muestra la cadena "true" :confused: ,a veces no muestra nada...

El volcado sobre el memo mediante el método LoadfromStream anda perfecto,asi que dado que necesitaba impepinablemente la trama en un string he volcado primero sobre el memo y después he accedido a éste y he copiado su contenido sobre el string.Así anda bien.



memoaux : TMemo;
clcd1linea1: TRasterlab;

procedure TForm1.procesasysex (const sysexbufferaux: TMemoryStream);
var
cadena : string;
begin
sysexbufferaux.Position := 0;
memoaux.Clear;
memoaux.Lines.LoadFromStream(sysexbufferaux);
setlength(cadena,sysexbufferaux.size);
cadena := Copy(memoaux.Lines.Strings[0],0, sysexbufferaux.size);
clcd1linea1.Text := cadena;
end;



Saludo

modulay
29-09-2007, 22:23:48
Esta solución va de lujo para el volcado directo sobre el string

SetString(cadena, pchar(sysexbufferaux.Memory), sysexbufferaux.size);