Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Pasar TMemorystream a string (https://www.clubdelphi.com/foros/showthread.php?t=48548)

modulay 27-09-2007 18:00:51

Pasar TMemorystream a string
 
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

Código:

// A un String
SetLength(Str,MemoryStream.Size);
MemoryStream.Write( PChar(Str)^, MemoryStream.Size);

Código:

// 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.

Código Delphi [-]

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

Código Delphi [-]
SetString(cadena, pchar(sysexbufferaux.Memory), sysexbufferaux.size);


La franja horaria es GMT +2. Ahora son las 20:20:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi