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:
// 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);
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.