![]() |
![]() ![]() ![]() ![]() |
|
Копирование потока компонент в буфер обмена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 | ||||