EOMY.NET
Хостинг EOMY.NET: Форум поддержки
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
RSS Feed  

Проецируемые в память файлы

 
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Программирование для PC (Windows/Linux/DOS)
Проецируемые в память файлы
Автор Сообщение
onyx
11 1110 1000
11 1110 1000


Зарегистрирован: 02.04.2007
Сообщения: 1061
Откуда: Минск
598 Монеты

СообщениеДобавлено: Чт, 05 Июл, 2007 12:56    Заголовок сообщения: Проецируемые в память файлы Ответить с цитатой

Проецируемые в память файлы
Не менее мощным и гибким методом организации обмена данными между приложениями является метод, который базируется на проецируемых в память файлах (Files Mapping). Основывается на динамической разделяемой памяти системы для хранения в ней данных. Вот собственно и сорс для использования этого метода:

Код:
var // Глобальные переменные
    hFileMapObj:THandle; // Описатель FaleMapping
    lpBaseAddress:PChar; // Указатель на начальный адрес данных



При создании окна создадим FileMapping с именем FileMemory и передадим полученный в результате описатель в глобальную переменную hFileMapObj

Код:
hFileMapObj := CreateFileMapping(MAXDWORD,Nil,PAGE_READWRITE,0,4,'FileMemory');
    If (hFileMapObj = 0) Then
        ShowMessage('Не могу создать проецируемый файл!')
    Else
    // Подключим файл к адресному пространству
    // и получим начальный адрес данных
        lpBaseAddress := MapViewOfFile(hFileMapObj,FILE_MAP_WRITE,0,0,0);
    If lpBaseAddress = Nil Then
        ShowMessage('Не могу подключить проецируемый файл!');



Теперь считаем данные в дополнительную переменную (можно повесить на кнопку (TButton))

Код:
StrPCopy(lpBaseAddress,Edit1.Text);


А таймер (TTimer) заставим следить и выводить данные в Label1

Код:
Label1.Caption:=PChar(lpBaseAddress);



Ну а при выходе отключим файл от адресного пространства (Form1.OnClose)

Код:
  UnMapViewOfFile(lpBaseAddress);
    // Освобождаем объект файла
    CloseHandle(hFileMapObj);
    // Закрываем форму
    Action := caFree;


+сорс в [url=http://www.onyx.uzelok.net/download/проецируемые_в_память_файлы.zip]архиве[/url]Wink
_________________
DelphiLand.net - Территория Delphi :: Исходники, компоненты, программы, статьи, журнал, форум.
Последние новости. И многое, многое другое!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
CH@$ER
Хостинг — это наше всё!
Хостинг — это наше всё!


Зарегистрирован: 19.06.2007
Сообщения: 157

58 Монеты

СообщениеДобавлено: Чт, 05 Июл, 2007 12:59    Заголовок сообщения: Ответить с цитатой

А в чем преимущество? И для чего вообще можно использовать?
_________________
Новичек! Заходи, если хочешь создавать игры!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
onyx
11 1110 1000
11 1110 1000


Зарегистрирован: 02.04.2007
Сообщения: 1061
Откуда: Минск
598 Монеты

СообщениеДобавлено: Чт, 05 Июл, 2007 13:01    Заголовок сообщения: Ответить с цитатой

CH@$ER, ты сначала почитай Wink
Предназначена метода для обмена данными между приложениями, я же писал...Так надежнее и быстрее!
_________________
DelphiLand.net - Территория Delphi :: Исходники, компоненты, программы, статьи, журнал, форум.
Последние новости. И многое, многое другое!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Программирование для PC (Windows/Linux/DOS) Часовой пояс: GMT
Страница 1 из 1

 


Rambler's Top100   Рейтинг@Mail.ru    



Powered by phpBB © 2001, 2005 phpBB Group