Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Jul 06, 2020 12:02 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 184 posts ]  Go to page Previous 1 2 3 4 513 Next
Author Message
PostPosted: Thu Feb 21, 2008 5:09 pm 
Offline

Joined: Wed May 18, 2005 7:27 pm
Posts: 1001
>файлы разделяются нулями, список заканчивается двойным нулём

а многотомные архивы WinRar *.r00?


Top
   
PostPosted: Thu Feb 21, 2008 5:28 pm 
Offline
Kernel Developer

Joined: Wed Mar 08, 2006 6:25 pm
Posts: 3952
Wildwest
Обычными нулями, а не '0'


Last edited by Serge on Thu Feb 21, 2008 8:12 pm, edited 1 time in total.

Top
   
PostPosted: Thu Feb 21, 2008 7:11 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
на тип содержимого хватит и одного байта, зачем dword? не думаю что будет больше 256-ти типов содержимого ;-)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Thu Feb 21, 2008 7:13 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
а так - поддерживаю вариант системной функции..

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Thu Feb 21, 2008 8:28 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 756
Gluk
я конечно понимаю, что некоторые хотят сэкономить аж целых 3 байта :), но по-моему, в данном случае dword смотрится красивее и использовав его вместо байта, потери производительности не произойдёт. зато размер структуры - 16 байт, а это IMHO красиво. :) к тому же при использовании 32-разр. регистров dword использовать проще. а насчёт запаса форматов, то почему обязательно нумеровать их так: 0, 1, 2, 3? можно же и так: ...00000b, ...00001b, ...00010b, ...00100b?


Top
   
PostPosted: Thu Feb 21, 2008 8:38 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
просто потом мы можем придумать как заюзать эти три байта, а пока оставить пустыми..

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Fri Feb 22, 2008 7:45 pm 
Offline

Joined: Thu Dec 21, 2006 10:51 am
Posts: 88
Народ, если это будет функция ядра, тогда и буфер будет хранится в пространстве ядра.
Может просто стандартный демон клибоарда и системная функции для обращиний к нему?

Есть еще одна идея в общесистемном буфере только хранить пид последнего процесса положившего в свой внутренний буфер некую инфу, и тип буфера коий может быть например - текстовые данные, битмап, или просто двоичные даные.
Тогда процесс обратившийся с запросом - "дайте мне буфер" просто вызывает функцию пересылки данных через канал у процесса который последний положил инфу свой буфер.
Таким нехитрым образом можно будет поддерживать много буферов, например у редакторов RTF свой, у нотпадов свой, у граф редакторов свой и т.д.
Преимущества такие:
- локальные операции (CTRL+C, CTRL+V) будут занимать меньше времени, ибо данные хранятся во внутреннем буфере
самого процесса.
- Обращение к буферу текстового редактора, не затрет содержимое буфера скажем граф редактора.

Недостаток один (и то решаемый) внутренний буфер предпоследнего процесса положившего инфу в буфер не очищается, что ведет к перерасходу памяти. Решить можно с помощью посылки сообщения всем процессам с данным типом буфера (кроме последнего положившего в буфер данные естественно) очистить внутренний буфер.

_________________
Если бы строители строили здания, так же как программисты пишут программы первый же залетевший дятел разрушил бы цивилизацию.


Top
   
PostPosted: Fri Feb 22, 2008 9:52 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
последнее означает, что скопировав в animage картинку, мы потеряем текст из tinipad'a, лежащий в буфере?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Mon Feb 25, 2008 5:26 pm 
Offline

Joined: Thu Dec 21, 2006 10:51 am
Posts: 88
Gluk wrote:
последнее означает, что скопировав в animage картинку, мы потеряем текст из tinipad'a, лежащий в буфере?


Нет? Я-же написал в общеистемном буфере хранить инфу о процессе который последний положил в свой внутренний буфер инфу и тип буфера (текстовый, RTF, Image и т.д.) Положив текст из тинипада, потеряем текст во всех тинипадах и т.п. (у кого тектовый буфер) и получим доступ только к последнему тинипаду положившему инфу во внутренний буфер при этом всех у кого Image это не касается.

_________________
Если бы строители строили здания, так же как программисты пишут программы первый же залетевший дятел разрушил бы цивилизацию.


Top
   
PostPosted: Thu Apr 03, 2008 11:15 pm 
Offline
User avatar

Joined: Mon Nov 05, 2007 12:09 am
Posts: 32
Serge:
Quote:
Кстати для работы черес IPC надо знать PID сервиса.

PID процесса можно найти по имени процесса, используя функцию 9 (информация
о потоке выполнения) в цикле.
Например, таким способом выводится список процессов по команде PS в приложении CMD.
Соответственно, процесс буфера обмена назвать @CLIP.


Last edited by shurf on Sun Apr 06, 2008 1:45 pm, edited 1 time in total.

Top
   
PostPosted: Sat Apr 05, 2008 7:50 pm 
Offline

Joined: Sat Mar 22, 2008 4:38 pm
Posts: 20
ИМХО не надо делать буфер, храня только PID процесса. Копируем большой текст, и вдруг закрываем прогу. И результат как минимум не приятен.


Top
   
PostPosted: Sun Apr 06, 2008 12:20 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
DonPedro, под PID процесса подразумевался PID самого менеджера буфера обмена.

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Sun Apr 06, 2008 11:43 am 
Offline

Joined: Sat Mar 22, 2008 4:38 pm
Posts: 20
Перечитал, понял)


Top
   
PostPosted: Sat Aug 23, 2008 1:19 pm 
Offline

Joined: Wed Jun 04, 2008 10:16 pm
Posts: 174
Вот моя реализация буфера обмена через процесс-демон и IPC-сообщения. Размер буфера ограничен 16 Мб, одновременно поддерживается до 16 буферов с id размером в 2 байта. Подробности в архиве.

id формата предлагаю резервировать здесь, в этой ветке. Сейчас id=1 занят для обычного текста, остальные до 65534 свободны.

Имхо, может иметь смысл также добавить в демон горячую клавишу (например Ctrl-Alt-V) для вставки текста в приложения, которые не поддерживают работу с буфером. По этой клавише будет нужно отправить содержимое буфера с id=1 (текст) через сообщения о нажатии клавиши.


Attachments:
clip.7z [29.68 KiB]
Downloaded 162 times
Top
   
PostPosted: Mon Aug 25, 2008 3:13 am 
Offline

Joined: Sat Dec 01, 2007 1:35 pm
Posts: 7
А может лучше, своего рода, контейнер файлов? Ну типа папка, только её файлы в RAM.
Наподобии врЕменной папки в far'e. Горячие клавишы: скопировать в эту папку, и загрузить из неё последний скопированный в нее элемент.
И даже демоны не нужны.
Что бы поудалять что-нибудь, нет нужны писать специальную прогу, это можно сделать в файловом менеджере.
Данные можно будет загрузить в прогу не умеюшую работать с буф.

Ну, а если все таки через демон, то все равно как файлы хранить.

Для текста, хорошо бы прогу, которая могла бы эммулируя нажатия клавиш впечатывать текст(тогда не нужно делать поддержку буффера в прогах, для того что бы вставить текст)


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 184 posts ]  Go to page Previous 1 2 3 4 513 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited