Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];

Вниз

Содержимое буфера в поток   Найти похожие ветки 

 
95   (2009-05-04 14:06) [0]

нашел код сохранения содержимого буфера в поток, если в буфере хранится текст - все выводится без проблем, когда картинка - создается пустой файл? Этот код разве не применим для сохранения картинок?


 
Palladin ©   (2009-05-04 14:10) [1]

прикинь, я тоже нашел код. он применим.


 
Сергей М. ©   (2009-05-04 14:11) [2]


> Этот код


Этот не применим, а вот тот применим


 
95   (2009-05-04 14:14) [3]

блин забыл добавить


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));
       ShowMessage(IntToStr(Size));
       Stream.Write(Buffer^, Size);
     finally
       GlobalUnlock(Data);
     end;
   finally
     Clipboard.Close;
   end;
 end;


 
Сергей М. ©   (2009-05-04 14:19) [4]


> блин забыл добавить


Блин добавляй на блины.ру


> когда картинка


В параметре Format, наверно, так и передается CF_КАРТИНКА ?)


 
95   (2009-05-04 14:20) [5]


var
 fs: TFileStream;
begin
 fs := TFileStream.Create("d:\2.jpg", fmCreate);
 SaveClipboardToStream(CF_BITMAP, fs);
 fs.Free;


 
Сергей М. ©   (2009-05-04 14:24) [6]

Пустой файл означает только одно:

Data = 0


 
95   (2009-05-04 14:31) [7]


> Data = 0


Проверял отладчиком при выполнении Data <> 0, а вот Size почему-то равен 0.


 
Сергей М. ©   (2009-05-04 14:45) [8]

А где вызов OpenClipboard() ?


 
95   (2009-05-04 14:53) [9]


> А где вызов OpenClipboard() ?


Так ведь Clipboard открывается внутри процедуры в которую я передаю созданный stream?


 
Сергей М. ©   (2009-05-04 15:00) [10]

Угу .. вижу ..


> Size почему-то равен 0.


Справку почему бы не проштудировать ?

Return Value

If the function succeeds, the return value is the size of the specified global memory object, in bytes.

If the specified handle is not valid or if the object has been discarded, the return value is zero. To get extended error information, call GetLastError.


 
95   (2009-05-04 15:07) [11]

Странно, процедуру взял из JVCL библиотеки, а она не работает. Кстати с текстом все OK...


 
clickmaker ©   (2009-05-04 15:13) [12]

> fs := TFileStream.Create("d:\2.jpg", fmCreate);
> SaveClipboardToStream(CF_BITMAP, fs);

не в этом ли грабли?


 
95   (2009-05-04 15:15) [13]

Все кажется допер почему возвращает 0, изображения то я копирую в буфер в браузере. Може поэтому?


 
Palladin ©   (2009-05-04 15:16) [14]

)


 
Palladin ©   (2009-05-04 15:18) [15]

http://delphimaster.net/view/1-1229944689/
исследуй, чего у тебя на самом деле в буфере


 
Сергей М. ©   (2009-05-04 16:26) [16]


> допер


Не надо "допирать")
Следует просто проанализировать код отказа ф-ции GlobalSize, коль скоро она у тебя возвращает 0.


 
clickmaker ©   (2009-05-04 16:54) [17]

и вообще, причем тут GlobalSize, если там сидит HBITMAP?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.006 c
2-1240982320
Iriss
2009-04-29 09:18
2009.06.21
TSaveDialog


15-1239354740
Sergey Masloff
2009-04-10 13:12
2009.06.21
бесшумный системный блок


15-1239690431
начинающий
2009-04-14 10:27
2009.06.21
Лечение вирусов на NTFS-разделах


2-1240937555
Андрей (начинающий)
2009-04-28 20:52
2009.06.21
как заставить мигать иконку


11-1203125531
Dodfr
2008-02-16 04:32
2009.06.21
WMI and ActiveKOL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский