Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Как реализовать совместное использование проэцируемого файла в память?

Ответить
Настройки темы
Win32 API - Как реализовать совместное использование проэцируемого файла в память?

Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


Помогите решить такую задачю:

Есть 2 программы и файл data.dat с 20-30 числами от 1 до 100
нужно сделать следующее

Программа №1. «Сортировка данных»

1. Включаем обработку события нажатия клавиши, и отслеживаем в нем нажатие пробела. Если пользователь нажал пробел, значит начинаем сортировку данных.
2. Выполняем проецирование файла в память. Используем для этого созданный файл data.dat. В результате получим доступ к данным как к обычному одномерному массиву.
3. Выполняем сортировку массива, любым из методов сортировки. Вставьте 1-но секундную задержку для каждой итерации сортировки массива, это позволит потом наглядней увидеть процесс сортировки.
4. По окончанию сортировки, программа выводит в окно, строку «Работа завершена».



Программа №2. «Вывод файла данных в окно»

1. Выполняем проецирование файла в память. Используем для этого созданный файл data.dat. В результате получим доступ к данным как к обычному одномерному массиву. Этот же файл проецирует в память предыдущая программа.
2. Создаем таймер на 0.5 секунды. При получении сообщения от таймера, выполняем вывод всего массива в окно. Предусмотрите корректный перевывод данных в окно, без наложений. В окно выводим не числа из массива, а строки одного и того же символа, например «*», в количестве равном числу из массива.



Запускаем на выполнение обе программы одновременно. Когда вторая программа запустилась и выполняет вывод данных в окно (выводит пока одну и туже картинку каждые пол секунды), нажимаем пробел в первой программе и она начинает сортировать массив. При этом, так как они данные берут из одного и того же файла (обе проецировали его себе в память), то первая вносит изменения переставляя данные при сортировке, а вторая выводит из себе в окно и мы видим ход процесса сортировки.

Смог сделать токо прогу с выводом данных, и то при работе с проэцируемым фыйлом как с строкой. Проблемма в общем доступе 2х програм к данным и в том что не могу работать с проэцируемой областью как с массивом.

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Отправлено: 16:43, 14-03-2010

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


DaRiYs, ЕМНИП ОС вам не позволит прямое обращение к памяти выделенной другой программе. Этим достигается безопасность и изолированное(а следовательно безопасное) выполнение кода различных программ. (к сожалению нужный документ пока найти не удалось).
Для межпрограммного взаимодействия необходимо использовать именованные каналы или COM технологию. (Или иную технологию)
Если просто запустить 2 программы на выполнение, то каждая создаст собственное в памяти отображение файла, совершенно не обратив внимание, на соседку. (зачем ей умничать, если пользователю так надо?)

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 21:30, 14-03-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


Цитата DaRiYs:
не могу работать с проэцируемой областью как с массивом»
MapViewOfFile не срабатывает?

Отправлено: 23:41, 14-03-2010 | #3


Старожил


Сообщения: 222
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата pva:
MapViewOfFile не срабатывает? »
А как с ним работать правильно?

Цитата lxa85:
Если просто запустить 2 программы на выполнение, то каждая создаст собственное в памяти отображение файла, »
НУ правильно када обе программы проэцируют один файл каждая отдельно получается ошибка выполнения(

-------
Подпись, нарушающая правила конференции, отредактирована администратором


Отправлено: 00:24, 15-03-2010 | #4

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


здесь пример и описание (англ)
http://msdn.microsoft.com/en-us/libr...48(VS.85).aspx

Цитата DaRiYs:
У правильно када обе программы проэцируют один файл каждая отдельно получается ошибка выполнения »
какую именно ошибку выдаёт? ошибка совместного доступа? тогда флаги расшаривания надо поставить FILE_SHARE_READ|FILE_SHARE_WRITE. Если поставить 0, то никто кроме первого, открывшего файл, не сможет ничего сделать.

Последний раз редактировалось pva, 15-03-2010 в 10:43.


Отправлено: 10:14, 15-03-2010 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Как реализовать совместное использование проэцируемого файла в память?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - Конфликты/Совместное использование (прерывания) iDrug Microsoft Windows 2000/XP 5 04-04-2011 08:02
Совместное использование win2003 NordWest Microsoft Windows NT/2000/2003 7 06-11-2009 10:06
Использование в ГУИ ВМР файла с альфа каналом crashtuak AutoIt 0 08-08-2009 19:16
Разное - Совместное использование сканера в локальной сети. neja Microsoft Windows 2000/XP 2 27-09-2007 00:32
как запретить использование файла на другом компьютере? ghost99 Microsoft Windows 2000/XP 0 07-04-2006 11:49




 
Переход