Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > буфер -> stream


Автор: NieL 4.5.2009, 13:38
В буфере хранится изображение, необходимо сохранить его в Stream и из Stream в файл. Что-то делаю не так и сохраняется пустое изображения. Где я ошибаюсь?

Код

procedure TForm1.Button1Click(Sender: TObject);

  procedure SaveClipboardToStream(Format: Word; Stream: TStream);
  var
    Buffer: Pointer;
    Data: THandle;
    Size: Longint;
  begin
    Clipboard.Open;
    try
      Data := GetClipboardData(Format);
      if Data = 0 then
        Exit;
      Buffer := GlobalLock(Data);
      try
        // (rom) added handling of Format and Size!
        Size := GlobalSize(Data);
        Stream.Write(Format, SizeOf(Word));
        Stream.Write(Size, SizeOf(Longint));
        Stream.Write(Buffer^, Size);
      finally
        GlobalUnlock(Data);
      end;
    finally
      Clipboard.Close;
    end;
  end;

var
  s: TStream;
  B: TBitmap;
begin
  s := TMemoryStream.Create;
  SaveClipboardToStream(CF_BITMAP, s);

  b := TBitmap.Create;
  B.LoadFromStream(s);
  b.SaveToFile('d:\2.jpg');
  b.Free;
  s.Free;
end;


Автор: Лапоть 4.5.2009, 15:21
Код

  b := TBitmap.Create;
  s.Position := 0; // !!!!!!!!!!!!!!!!
  B.LoadFromStream(s);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)