Einzelnen Beitrag anzeigen

Benutzerbild von inherited
inherited

Registriert seit: 19. Dez 2005
Ort: Rosdorf
2.022 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Inhalt von TMemoryStream als String auslesen?

  Alt 12. Dez 2008, 18:03
Zitat von DeddyH:
Also, Du hast einen MemoryStream mit einem Bild drin? Dann sollte Nicos Code doch mit einer kleinen Änderung funktionieren.
Delphi-Quellcode:
function StreamToString(const Buffer: TMemoryStream): AnsiString;
begin
  SetString(Result, PAnsiChar(Buffer.Memory), Buffer.Size);
end;
Falls nicht, lass Dir doch mal Buffer.Size usw. mal ausgeben.
Würde das nicht nach dem ersten 0-Byte spätestens schiefgehen?

Vielleicht soltle man das Bild lieber sicherheitshalber in Hex-Strings konvertieren. ist zwar größer, aber schöner.
Der Ansatz wurde auch schon genannt
Delphi-Quellcode:
function BitmapToString(b: TBitmap): String;
var ms: TMemoryStream;
  a: Int64;
  buffer: Array[0..1024] of Byte;
begin
  result := '';
  ms := TMemoryStream.Create;
  try
    b.SaveToStream(ms);
    ms.Seek(0, soFromBeginning);
    a := 0;
    while a <> 0 do
    begin
      a := ms.read(buffer[0], length(buffer));
      for i := 0 to a-1 do
      begin
        result := result + IntToHex(buffer[i], 2);
      end;
    end;
  finally
    ms.Free;
  end;
end;
(ungetestet)
Nikolai Wyderka

SWIM SWIM HUNGRY!
Neuer Blog: hier!
  Mit Zitat antworten Zitat