Problem z zapisaem TmemoryStream do String

0

Witam.
Mam problem z zapisem TMemoryStream do String'u a mianowicie
robię tak

Buffer:='';
MS.Read(Buffer,SizeOf(Buffer));
i później jak dam np ShowMessage(Buffer);

to mi wyświetla tylko 4 znaki (w strumieniu MS przechowuję obrazek JPEG) i są inne niż w pliku który zapisałem na dysku

MS.SaveToFile('C:\A.JPG');

Nie co jest nie tak, jak to wytłumaczyć ?
W takim przykładzie wszystko normalnie działa...

var
  strumien : TMemoryStream;
  txt : string; // Będziemy potrzebować tej zmiennej - przechowuje ona tekst

begin

strumien := TMemoryStream.Create;

txt := 'Ble, ble, ble - zawartość strumienia';
strumien.Write(txt,SizeOf(txt));
strumien.Position := 0;
txt := '';

strumien.Read(txt,SizeOf(txt));

ShowMessage(txt);
strumien.Free;

 
0
var
  strumien : TMemoryStream;
  txt : string; // Będziemy potrzebować tej zmiennej - przechowuje ona tekst
 
begin
 
strumien := TMemoryStream.Create;
 
txt := 'Ble, ble, ble - zawartość strumienia';
strumien.Write(txt[1], Length(txt));
strumien.Position := 0;
txt := '';

SetLength(txt, strumien.Size); 
strumien.Read(txt[1], strumien.Size);
 
ShowMessage(txt);
strumien.Free;

poczytaj czym się różni length od sizeof

0

Lub tak:

  Strumien:=TMemoryStream.Create;

  txt:='Ble, ble, ble - zawartość strumienia';
  Strumien.Write(PChar(txt)^,Length(txt)+1);
  txt := '';

  Txt:=StrPas(Strumien.Memory);

  ShowMessage(txt);

  Strumien.Free;

1 użytkowników online, w tym zalogowanych: 0, gości: 1