![]() |
Как реализовать совместное использование проэцируемого файла в память?
Помогите решить такую задачю:
Есть 2 программы и файл data.dat с 20-30 числами от 1 до 100 нужно сделать следующее Программа №1. «Сортировка данных» 1. Включаем обработку события нажатия клавиши, и отслеживаем в нем нажатие пробела. Если пользователь нажал пробел, значит начинаем сортировку данных. 2. Выполняем проецирование файла в память. Используем для этого созданный файл data.dat. В результате получим доступ к данным как к обычному одномерному массиву. 3. Выполняем сортировку массива, любым из методов сортировки. Вставьте 1-но секундную задержку для каждой итерации сортировки массива, это позволит потом наглядней увидеть процесс сортировки. 4. По окончанию сортировки, программа выводит в окно, строку «Работа завершена». Программа №2. «Вывод файла данных в окно» 1. Выполняем проецирование файла в память. Используем для этого созданный файл data.dat. В результате получим доступ к данным как к обычному одномерному массиву. Этот же файл проецирует в память предыдущая программа. 2. Создаем таймер на 0.5 секунды. При получении сообщения от таймера, выполняем вывод всего массива в окно. Предусмотрите корректный перевывод данных в окно, без наложений. В окно выводим не числа из массива, а строки одного и того же символа, например «*», в количестве равном числу из массива. Запускаем на выполнение обе программы одновременно. Когда вторая программа запустилась и выполняет вывод данных в окно (выводит пока одну и туже картинку каждые пол секунды), нажимаем пробел в первой программе и она начинает сортировать массив. При этом, так как они данные берут из одного и того же файла (обе проецировали его себе в память), то первая вносит изменения переставляя данные при сортировке, а вторая выводит из себе в окно и мы видим ход процесса сортировки. Смог сделать токо прогу с выводом данных, и то при работе с проэцируемым фыйлом как с строкой. Проблемма в общем доступе 2х програм к данным и в том что не могу работать с проэцируемой областью как с массивом. |
DaRiYs, ЕМНИП ОС вам не позволит прямое обращение к памяти выделенной другой программе. Этим достигается безопасность и изолированное(а следовательно безопасное) выполнение кода различных программ. (к сожалению нужный документ пока найти не удалось).
Для межпрограммного взаимодействия необходимо использовать именованные каналы или COM технологию. (Или иную технологию) Если просто запустить 2 программы на выполнение, то каждая создаст собственное в памяти отображение файла, совершенно не обратив внимание, на соседку. (зачем ей умничать, если пользователю так надо?) |
Цитата:
|
Цитата:
Цитата:
|
здесь пример и описание (англ)
http://msdn.microsoft.com/en-us/libr...48(VS.85).aspx Цитата:
|
Время: 16:30. |
Время: 16:30.
© OSzone.net 2001-