Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2011, 19:41   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Внутрибиблиотечный мьютекс или флаг.

Есть в библиотеке функа CreateApplication, которая "подготавливает почву" для создания форм и прочих. В принципе её могут и не запускать, если окна не нужны. Моя задача - поставить защиту от дурака, предотвратив вылет при повторном вызове. Т.е. выставить глобальный флаг. Ок, предположим я его поставил и в CreateApplication делаю проверку, если он FALSE, то выполняю процедуру и ставлю его в TRUE, иначе ничего не делаю. Но вот незадача - просто прописанный в Var флаг будет содержать мусор до инициализации, которая внутри функции, которая проверяет флаг. Т.е. заколдованный круг. Как мне его порвать?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.02.2011, 20:34   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Первой строчкой после бегина поставьте ее в FALSE.
p51x вне форума Ответить с цитированием
Старый 02.02.2011, 20:42   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Думал об этом, но если к той же библиотеке подсоединится еще одно приложение, создастся собственный экземпляр переменной и зафолсится она или произойдет второй по счету фолсинг флага первого приложения?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.02.2011, 21:05   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Ну ты же сам заикнулся про мьютекс)
Мьютекс на то и существует, что он - глобально-уникальный объект.
Не нравится мьютекс ? Нравятся переменная ? Тоже не проблема - затолкай ее в shared-секцию своей dll или в глобально доступную разделяемую память (file mapping)

> прописанный в Var флаг будет содержать мусор до инициализации

Не будет, если переменная статическая и линкер дельфийский и никакой иной.
Ноль туда вкатит линкер, а ноль это далеко не мусор)

Последний раз редактировалось mss; 02.02.2011 в 21:07.
mss вне форума Ответить с цитированием
Старый 02.02.2011, 21:21   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
и линкер дельфийский
А кто сказал, что я пишу на Delphi? Уже около года на лазаре пишу.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.02.2011, 21:24   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

если не ошибаюсь то инициализация переменной тоже сработает в ДЛЛ.
а если не работает, то используй DLLEntryPoint для инициализации.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу доресовать флаг! значок один.. 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