![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 05.01.2009
Сообщений: 12
|
![]()
Доброго времени суток.
Возник вопрос: как объявить\использовать переменную, к которой смогут обращаться несколько экземпляров программы ![]() То есть любой экземпляр может считывать и изменять значение переменной и оно изменится для всех экземпляров программы. Вот например как это делается в С++ : #pragma data_seg("Shared") volatile LONG x = 0; #pragma data_seg() Тогда X и будет такой переменной. Долго искал похожий аналог в делфи и не нашел. Помогите, пожалуйста. ЗЫ Вариант с сохранением значения переменной в файле не подойдет. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 17.11.2008
Сообщений: 116
|
![]()
Если уже сильно извращаться, то можно писать в опциональный поток исполняемого файла. Вот накидал примерчик:
Код:
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 05.01.2009
Сообщений: 12
|
![]()
Спасибо вам большое.
А возможно реализовать это через память, то есть чтобы значение переменной хранилось в бщем секторе памяти программы и чтобы к этому сектору мог получить доступ на чтение\запись любой экземпляр данной программы ? Есть ли директива компилятора, которая может поместить переменную в такую обл. памяти ? |
![]() |
![]() |
![]() |
#5 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
CreateFileMapping/MapViewOfFile
(на *File* не обращай внимания, это только название такое) http://www.delphisources.ru/pages/fa...lemapping.html
пыщь
|
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 16.12.2006
Сообщений: 859
|
![]() Цитата:
или я что-то путаю... Последний раз редактировалось mihali4; 23.02.2009 в 18:50. Причина: Не следует цитировать полностью |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 02.02.2009
Сообщений: 54
|
![]()
бля! ему ответили а на мою тему ноль внимания! http://programmersforum.ru/showthread.php?t=39273
который час сижу ответа жду. хоть бы кто нибудь. всё нахер! баньте! видеть вас не могу |
![]() |
![]() |
![]() |
#8 | |
Пользователь
Регистрация: 05.01.2009
Сообщений: 12
|
![]()
Спасибо всем кто откликнулся.
Цитата:
В первом сообщении я указал код на С++, который оъявляет переменную x=0. Если, написать в проге функцию, которая будет увеличивать x при нажатии enter и выводить на печать, то работать будет так : запустим программу, нажмем enter 2 раза, на экране будет 0. 1. 2. Запустим ещё раз программу, появится соответственно второе окно, в нем нажмем enter, появится цифра 3. И так далее, можно запустить 3-й экземпляр, нажать enter, появится 4, перейдем на первое, enter, 5....уф... При этом переменная x едина и каждый экземпляр может её менять. Извините, я немного сумбурно и на пальцах, но этот пример характеризует мою задачу очень хорошо. |
|
![]() |
![]() |
![]() |
#9 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Встроенных средств в делфи нет, но реализуется двумя строчками кода
hFile:=CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 4, 'AnyName'); pData:=MapViewOfFile(hFile, FILE_MAP_WRITE, 0, 0, 0); В результате данные по указателю pData (строка, число, запись...) доступны всем копиям программы, см. аттач и пост #5
пыщь
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 05.01.2009
Сообщений: 12
|
![]()
Всё, разобрался. CreateFileMapping оказалось то что нужно.
Спасибо большое всем кто отписался. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Общая переменная для различных обработчиков событий | Mike_new | Общие вопросы .NET | 3 | 29.12.2008 16:43 |
Проверка количества запущенных экземпляров приложения | yulia | Общие вопросы Delphi | 3 | 07.10.2008 02:30 |
Подскажите пожалуста! есть ли переменная для обозначения дисковода? | Medyankin | Помощь студентам | 4 | 27.07.2008 15:58 |
Общая переменная | А.Брей | Помощь студентам | 2 | 20.05.2007 18:13 |
Доступ к com порту для нескольких приложений | Lexx | Win Api | 11 | 06.04.2007 20:10 |