![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Копирование потока компонент в буфер обменаDelphi , ОС и Железо , Буфер обменаКопирование потока компонент в буфер обмена
Оформил: DeeCo { Clipboard has methods GetComponent and SetComponent but we need to stream multiple components to the clipboard to include copy paste type of feature. Die Zwischenablage hat die Methoden GetComponent and SetComponent aber wir wollen mehrere Komponenten in die Zwischenablage speichern und wieder auslesen. } procedure CopyStreamToClipboard(fmt: Cardinal; S: TStream); var hMem: THandle; pMem: Pointer; begin S.Position := 0; hMem := GlobalAlloc(GHND or GMEM_DDESHARE, S.Size); if hMem <> 0 then begin pMem := GlobalLock(hMem); if pMem <> nil then begin S.Read(pMem^, S.Size); S.Position := 0; GlobalUnlock(hMem); Clipboard.Open; try Clipboard.SetAsHandle(fmt, hMem); finally Clipboard.Close; end; end { If } else begin GlobalFree(hMem); OutOfMemoryError; end; end { If } else OutOfMemoryError; end; { CopyStreamToClipboard } procedure CopyStreamFromClipboard(fmt: Cardinal; S: TStream); var hMem: THandle; pMem: Pointer; begin hMem := Clipboard.GetAsHandle(fmt); if hMem <> 0 then begin pMem := GlobalLock(hMem); if pMem <> nil then begin S.Write(pMem^, GlobalSize(hMem)); S.Position := 0; GlobalUnlock(hMem); end { If } else raise Exception.Create('CopyStreamFromClipboard: could not lock global handle ' + 'obtained from clipboard!'); end; { If } end; { CopyStreamFromClipboard } Вот перевод текста на русский язык: Это фрагмент кода на Delphi, демонстрирующий, как копировать и вставлять потоки данных между буфером обмена и объектом TStream. Процедуры CopyStreamToClipboard
CopyStreamFromClipboard
Код использует тип THandle для представления handle и тип PPointer для представления указателя на блок памяти. Функции Обратите внимание, что код предполагает, что входной поток (S) не равен null, и что формат, заданный параметром Также помните, что этот код использует устаревшую версию API Delphi для работы с буфером обмена. Если вы планируете использовать этот код в новом проекте, вам может потребоваться обновить его до использования новых API. Копирование потока компонент в буфер обмена: описано процедуры CopyStreamToClipboard и CopyStreamFromClipboard для записи и чтения множественных компонентов из буфера обмена. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Буфер обмена ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |