![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
Доброго времени суток, уважаемые форумчане! Возник вопрос по директивам компилятора
Имеется константа описанная
В данном примере проверяется значение $IFDEF А можно ли проверять версию windows? Getversion просьба не предлагать Это сообщение отредактировал(а) gonzales - 19.11.2012, 17:09 --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Полный список предопределенных констант тут http://docwiki.embarcadero.com/RADStudio/X...edefined_Macros
На самом деле можно определить только Windows ли это или Мак. Если захотеть и сильно выкрутиться можно попробовать накрутить что-то с шаблонами, так чтобы Getversion вызывалась еще компилятором. Но не уверен получиться ли. Можно попробовать написать небольшую программу, которая будет вызываться перед компиляцией проекта, проверит версию ОС и создаст заголовочный файл с нужным дефайном. Этот заголовок будет включаться в проект. Это сообщение отредактировал(а) Alexeis - 19.11.2012, 17:55 -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
В данном примере проверяется то, что известно уже на этапе компиляции. А именно есть ли в списке Conditional Defines условие GDIP_0110. На этапе компиляции проекта или во время выполнения программы? Если первое, то нафига это нужно? Если второе, то может поможет/подойдёт Смотри ответ Юрия Зотова на ДМ. Добавлено через 7 минут и 31 секунду И только в ХЕ3. Может где-то в исходниках завалялось ещё и определение линукса. Самому лень искать в Д6 ![]() Это сообщение отредактировал(а) northener - 20.11.2012, 00:13 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
gonzales |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
Идея в принципе интересная. а как запустить программу на этапе компиляции? сорри, если спрашиваю простые вещи
Потому что есть например такая конструкция
Открыл юнит winapi.windows, нашел интересные вещи
_WIN32_WINNT - это не то? Это сообщение отредактировал(а) gonzales - 20.11.2012, 10:00 --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
||||||||
|
|||||||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Если тебе нужно компилировать разные экзешники для разных версий винды, то создай по конфигурации для разных версий, и в каждой конфигурации определи свой дефайн
-------------------- Обижено школьников: 8 |
|||
|
||||
gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
именно это и надо. вопрос, сам ехе-шник при этом будет один, или все равно будет их два? --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
в каждой конфигурации свой будет
-------------------- Обижено школьников: 8 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Насколько я помню тут настраивается http://ybex.com/d/00ks6ohxufhnrichwue74o6a...devk0dwfh5.html -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
ты действительно хочешь чтобы для получения экзешников предназначенных для разных версий тебе нужно было загружать другую версию? всё же можно компилировать на одной это не повод держать несколько экзешников. тут лучше сделать проверку в рантайм -------------------- Обижено школьников: 8 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Вообще, да обычно проверяют сначала есть ли все необходимые фичи в винде. Если есть, то юзают, если нет либо заменяют своим, либо не используют если это возможно.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
gonzales |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 241 Регистрация: 13.3.2006 Репутация: 1 Всего: 2 |
может я не совсем правильно выражаю свои мысли))))
объясню суть проблемы. Есть системная библиотека gdiplus.dll. В XP используется своя версия, в 7 и Висте - своя, с расширенным функционалом. Есть заголовочный файл для работы с библиотекой, http://www.bilsen.com/gdiplus/index.shtml Все доп. возможности определяются константой GDIPVER, которая определяется из содержания Conditional defines.
Соответственно для компиляции проекта под ХР необходимо переопределить Conditional defines. В рантайме я пробывал определять версию и не использовать опции расширенной библиотеки, но все равно получаю ошибку "точка входа в библиотеку..... не найдена" Таким образом единственный выход определять GDIPVER на этапе компиляции, или использовать путь предложенный Alexeis. Или я чего-то не понимаю? ![]() --------------------
- мастер, мастер, запорол..., все четыре запорол!!!- я ж тебе только три давал!!!???- да я и образец запорол!!!! |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Таким образом использование/неиспользование conditional define 'GDIP_0110' позволяет вам скомпилировать два варианта ЕХЕ-шника. Один не будет использовать расширенные возможности GDI+ 1.1, но будет работать под любой версией Windows. Второй вариант будет использовать расширенные возможности GDI+ 1.1, но будет работать только под Windows Vista и выше.
-------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
ну сделай функцию которая есть в только в новой версии delayed и вызывай только когда определяешь что новая версия -------------------- Обижено школьников: 8 |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Просто библиотека линкуется статически. Поэтому и проблемы. Можно проверять присутствие и потом грузить динамически. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Просто эта (данная автору в виде dpk) библиотека недоделана. И не умеет работать в рантайм. -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |