![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
Есть в библиотеке функа CreateApplication, которая "подготавливает почву" для создания форм и прочих. В принципе её могут и не запускать, если окна не нужны. Моя задача - поставить защиту от дурака, предотвратив вылет при повторном вызове. Т.е. выставить глобальный флаг. Ок, предположим я его поставил и в CreateApplication делаю проверку, если он FALSE, то выполняю процедуру и ставлю его в TRUE, иначе ничего не делаю. Но вот незадача - просто прописанный в Var флаг будет содержать мусор до инициализации, которая внутри функции, которая проверяет флаг. Т.е. заколдованный круг. Как мне его порвать?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,821
|
![]()
Первой строчкой после бегина поставьте ее в FALSE.
|
![]() |
![]() |
![]() |
#3 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
Думал об этом, но если к той же библиотеке подсоединится еще одно приложение, создастся собственный экземпляр переменной и зафолсится она или произойдет второй по счету фолсинг флага первого приложения?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
#4 |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]()
Ну ты же сам заикнулся про мьютекс)
Мьютекс на то и существует, что он - глобально-уникальный объект. Не нравится мьютекс ? Нравятся переменная ? Тоже не проблема - затолкай ее в shared-секцию своей dll или в глобально доступную разделяемую память (file mapping) > прописанный в Var флаг будет содержать мусор до инициализации Не будет, если переменная статическая и линкер дельфийский и никакой иной. Ноль туда вкатит линкер, а ноль это далеко не мусор) Последний раз редактировалось mss; 02.02.2011 в 21:07. |
![]() |
![]() |
![]() |
#5 | |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]() Цитата:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
если не ошибаюсь то инициализация переменной тоже сработает в ДЛЛ.
а если не работает, то используй DLLEntryPoint для инициализации. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не могу доресовать флаг! значок один.. | kiil333 | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 19.01.2011 21:43 |
Как работает флаг WS_EX_LAYOUTRTL | ZvEr_HaCkEr | Общие вопросы Delphi | 1 | 19.09.2010 18:22 |
Объекты ожидания в Delphi. Мьютекс, Семафор и Критические секции. | OlgaZN | Помощь студентам | 2 | 11.06.2010 12:01 |
Нарисовать флаг сухопутных войск РФ?! | Файзулка | Помощь студентам | 2 | 02.06.2009 08:58 |
Нарисовать флаг РФ (C++) | NoiseEP | Помощь студентам | 5 | 15.03.2009 10:21 |