Ограничение размера буфера обмена

Есть ли ограничение на размер данных, которые можно скопировать в буфер обмена? Я использую VB6 и мне нужно скопировать блоки данных в буфер обмена.


person Community    schedule 24.08.2009    source источник
comment
Это вопрос по программированию? Если да, то как насчет предоставления нам более подробной информации, чтобы мы могли вам помочь. Если нет, то этот вопрос в другом месте.   -  person Bevan    schedule 24.08.2009
comment
Да, я пытаюсь записать данные в буфер обмена, используя vb6. Вот почему я задаюсь вопросом о его пределе.   -  person    schedule 24.08.2009
comment
В качестве информации: вы можете подумать, что буфер буфера обмена слишком мал при копировании текста с некоторыми символами NUL (ascii 0) в редактор. В данном случае проблема не в размере буфера обмена, а в том, что редактор распознает NUL как конец текста и больше не вставляет после этого символа.   -  person Olivier Faucheux    schedule 12.07.2012


Ответы (3)


Приложения вызывают GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE), чтобы выделить память для данных, которые будут храниться в буфере обмена, и сделать их доступными для других приложений. Для 32-разрядных приложений GlobalAlloc может выделять блоки размером до 2 ГБ или до объема виртуальной памяти ПК, в зависимости от того, что меньше. Буфер обмена Windows не имеет других ограничений по размеру.

person Jan Goyvaerts    schedule 22.04.2011
comment
А как насчет 64-битных приложений? - person Konrad; 21.08.2018

Большая часть данных копируется как ссылка, а не сами данные, поэтому вы можете копировать практически все, что угодно, любого размера. Текст, однако, на самом деле копируется, и, насколько я знаю, объем данных ограничен тем, сколько оперативной памяти в настоящее время доступно. Помните об этом, если vb6 может с этим справиться, я уверен, что буфер обмена справится с этим.

person Community    schedule 24.08.2009
comment
(-1) Большинство данных не скопировано по ссылке. В простейшем случае строковая переменная в приложении копируется в глобальный блок памяти, как указал Ян. Бывают ситуации, когда копирование/вставка включает указатели на внутреннее хранилище, но обычно это происходит с проприетарными/частными форматами. Для обычных вещей, таких как AnsiString, UnicodeString, RTF, HTML, Bitmap и т. д., это делается с общей глобальной памятью, а это означает, что должна существовать вторая копия данных. - person Chris Thornton; 19.07.2012

Зависит от объема памяти в системе.

person rahul    schedule 24.08.2009
comment
Я так не думаю, но объем памяти все равно слишком расплывчатый. Физическая оперативная память или виртуальная память? А как насчет систем с ›4 ГБ памяти и 32-битными приложениями? - person ; 24.08.2009