.
Tuesday 22nd of May 2012    

Информация

Счетчики

Голосование

Лучшая марка телефона
 

Реклама

фильмы онлайн

фильмы онлайн


события OnTim-er
загрузка...

Для отмены представления файла в адресном пространстве процесса предназначен метод:

Единственный параметр функции - базовый адрес объекта отображения (результат работы метода MapViewOfFile()).

Вернемся к нашему примеру и опишем событие закрытия главной формы:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin

UnMapViewOfFile(pMFile); //отмена представления файла в адресном пространстве

CloseHandle(hMFile); //освобождаем дескриптор объекта отображения

end;

Научившись создавать и уничтожать объекты отображения, займемся самым интересным. Разместите на главной форме проекта два элемента управления: группу переключателей TRadioGroup и таймер TTimer. Чтобы заполнить группу переключателей некоторым набором элементов, перепишите событие создания формы:

procedure TForm1.FormCreate(Sender: TObject);

var Ch : byte;

begin

RadioGroup1.Align:=alClient;

for Ch:=Byte('A') to Byte('Z') do RadioGroup1.Items.Add(Char(Ch)); RadioGroup1.Columns:=3; end;

Компонент RadioGroup1 заполняется тремя колонками символов латинского алфавита. Опишем щелчок по компоненту:

procedure TForm1.RadioGroup1Click(Sender: TObject); var ind : string;

function UnMapViewOfFile(BaseAddress : pointer) : Boolean;

begin

ind:=IntToStr(RadioGroup1.Itemlndex); //индекс выбранной кнопки StrCopy(pMFile,PChar(ind)); //передаем индекс в файл

end;

В момент щелчка по группе переключателей выясняется индекс отмеченного переключателя, и он передается в объект отображения. Для этого применяется метод StrCopy(). Для считывания данных из объекта отображения предназначен таймер:

procedure TForm1.Timer1Timer(Sender: TObject);

var ind : string;

begin

if NOT (Application.Active) then begin

ind:=PChar(pMFile);

RadioGroup1.ItemIndex:=StrToIntDef(ind,0); end; end;

В момент возникновения события OnTim-er() производится считывание данных из объекта отображения. Полученное значение соответствует индексу переключателя, выбранного в другом приложении.

Проект завершен. Запустите несколько экземпляров нашего приложения и проверьте работоспособность кода.

При одновременном обращении нескольких процессов к объекту отображения возможно возникновение ошибки совместного использования ресурса. В таких случаях для защиты разделяемого ресурса целесообразно воспользоваться объектами синхронизации, например критической секцией.

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


загрузка...
 

Самое популярное:

bottom

карта сайта