powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
25 сообщений из 60, страница 2 из 3
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110282
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GunSmoker
Обходное решение в лоб:
Код: pascal
1.
2.
3.
4.
5.
uses
  {$IFDEF NeverDefineThisSymbol}
  Windows,
  {$ENDIF}
  Windows, ... ваши реальные модули и условия.



Тогда автоматически Delphi будет добавлять модули под NeverDefineThisSymbol, который никогда не определён, и, следовательно, эффекта иметь не будет.


Огромное спасибо. Ваше решение с небольшими модификациями заработало (ниже указано - как оно у меня заработало). Удалось обмануть среду Delphi - чтобы она добавляла свой мусор в определенное место и чтобы он не влиял на компиляцию. Визуальный редактор форм при этом тоже работает и не ругается. Велосипед, конечно в какой-то мере - но колеса почти идеально круглые - по крайней мере не хуже, чем были в Delphi 2007.



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
UNIT Unit1;
INTERFACE


USES
{$IF not Defined(NeverDefineThisSymbol)}
Windows
{$ELSE}
//секция для автодобавляемого мусора
Windows, System.Classes, Vcl.Controls, Vcl.StdCtrls
{$IFEND}


//пример самописной сложной фигни - можно и более сложное что-нибудь нагородить
, Winapi.Messages, System.SysUtils, System.Variants
{$IF not Declared(System.Classes)},System.Classes{$IFEND}
, Vcl.Graphics
{$IF not Declared(Vcl.Controls)},Vcl.Controls{$IFEND}
, Vcl.Forms, Vcl.Dialogs
,Vcl.StdCtrls
{$IF Defined(tratata)}
{$I USES.inc}
{$IFEND};
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110286
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_А что вы такое написали, что для вас критичен *порядок* модулей?

Прочитай её предыдущие топики. Она половину VCL отхакала, поэтому если её
костыли не окажутся последними - работать не будут.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110287
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
GunSmoker
Но судя по сообщению ТС - среда добавляет в начало.
Судя по сообщению ТС среда вообще не видит секцию uses и добавляет свою


Да - так именно и было. А если USES подключать из внешнего файла - не работал редактор форм. GunSmoker подсказал - спасибо ему - дело видимо не только в слове USES - а еще в слове Windows - видимо среда разработки ищет это слово при вставке модулей - а теперь находит, куда надо вставлять.

Так как среда всё равно тупая и не понимает, куда надо модули вставлять - логичным оказывается решение воспользоваться её тупостью и сделать чтобы она вставляла модули в то место, где они не мешают компиляции.

От самой среды по сути нужен визуальный редактор форм, а от программного кода - чтобы он компилировался - теперь оба условия выполняются.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110288
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
GunSmoker
Delphi будет добавлять модули под NeverDefineThisSymbol,
Точно? Модули всегда добавлялись в конец секции uses


В том и дело, что раньше добавлялись ПЕРЕД моей секцией USES. А теперь добавляются нормально.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110293
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

_Vasilisk_А что вы такое написали, что для вас критичен *порядок* модулей?

Прочитай её предыдущие топики. Она половину VCL отхакала, поэтому если её
костыли не окажутся последними - работать не будут.


Похоже, костыли уже одни из последних. Приложение на 400 тысяч строк кода, уже год пытаюсь перенести с Delphi 2007 на XE-8. Уже за год на XE-8 всё нормально компилируется и отлажено, все баги устранены почти. Остается один шаг - вообще уйти с Delphi 2007 и полностью перейти на XE8. При этом, разумеется, кучи хлама в проекте на XE-8 совсем не хочется притом что в Delphi 2007 всё в порядке было.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110301
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87Остается один шаг - вообще уйти с Delphi 2007 и полностью перейти на XE8.

Вы так и не познакомились с системами контроля версий и их ветками. Ну да, Вам
же некогда, кодировать надо...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110303
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_
Наталья87
где такой набор модулей в таком порядке нужен
Я стесняюсь спросить. А что вы такое написали, что для вас критичен порядок модулей? Тем более системных.


Например, поведение приложения при нажатии кнопки "Свернуть" (обсуждали уже здесь недавно). Притом, что все формы у меня модальные. Нужно чтобы при нажатии "Свернуть" в любом окне программы - сворачивалась программа целиком, а потом точно также аккуратно разворачивалась.

Из прочего - цветные кнопки (наследники TButton), цветные меню, свои модули - например, по работе с файлами, с MD5, работа с Excel и прочее.

Разумеется, хочется, чтобы все было в одном стиле во всем приложении - и чтобы не подключать все модули к каждой форме приложения (и не редактировать потом все формы - если добавится новый модуль) - и хочется написать что-то подобное

USES {$I All.inc}, ...;

И так уже более 400 тысяч строк кода - еще более 200 копий одинаковых модулей там не хватало чтобы окончательно запутаться ...

То есть это не говнокод в его понимании - наоборот, стремление всё упорядочить чтобы небыло лишних копий кода, а возможно, какое-то нестандартное применение.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110308
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Наталья87Остается один шаг - вообще уйти с Delphi 2007 и полностью перейти на XE8.

Вы так и не познакомились с системами контроля версий и их ветками. Ну да, Вам
же некогда, кодировать надо...


Вести 2 версии параллельно на D2007 и на D XE8? Нет, спасибо. И без этого уже задолбаюсь. Как получится привести код в нормальное состояние на XE8 - просто уйду с 2007 окончательно и всё. Пока все еще веду на 2007 - но для пользователей код компилирую на XE8 (код, написанный для 2007 и преобразовываемый AutoIt-ом для XE-8 для компиляции).
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110311
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87То есть это не говнокод в его понимании

Не хочу Вас расстраивать, но это именно он. Причём в терминальной стадии.

А ведь всего-то было достаточно при кодировании "цветной кнопки" назвать её
чуть-чуть иначе, чем TButton и прописать нужные модули в секцию зависимостей её
пакета...

PS: О том чтобы не бороться с ветряными мельницами и не пытаться раскрашивать
системную кнопку, которая к этому не приспособлена я уже молчу.

Наталья87хочется написать что-то подобное

USES {$I All.inc}, ...;
А нормальные люди не борются со средой и позволяют ей автоматически "написать что-то подобное" при первом броске своей кнопки на форму.

Наталья87Вести 2 версии параллельно на D2007 и на D XE8? Нет, спасибо. И без этого уже задолбаюсь.
Вы таки не поверите, но задолбались Вы именно от желания НЕ вести две версии параллельно. Уже упомянутые СКВ облегчают именно этот процесс до тривиального.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110312
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Наталья87То есть это не говнокод в его понимании

А ведь всего-то было достаточно при кодировании "цветной кнопки" назвать её
чуть-чуть иначе, чем TButton и прописать нужные модули в секцию зависимостей её
пакета...


Ну допустим, назовём её ColorButton.

А как во все модули форм прописывать? Как дура и буду бегать по всем формам, дописывать везде в секцию USES
, ColorButton
?

А если ColorMenu добавится - что - снова бегать по модулям и добавлять? Если приложение было сделано с обычными кнопками, а потом заказчик захотел цветные? А потом захотел, например, цветные меню.

Какое тут еще может быть решение кроме модулей, подключаемых списком ко всем формам приложения?
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110313
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
А как во все модули форм прописывать? Как дура и буду бегать по всем формам, дописывать везде в секцию USES
, ColorButton
?

Внезапно: бросаете на форму свой ColorButton и среда САМА прописывает его в секцию USES. Причём только в те формы, где он реально нужен.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110314
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

PS: О том чтобы не бороться с ветряными мельницами и не пытаться раскрашивать
системную кнопку, которая к этому не приспособлена я уже молчу.


А что делать если весь проект написан с кучей TButton - например? Переделывать весь проект на основе другого компонента ради того, чтобы кнопки сделать цветными (а потом еще отлавливать баги)? И опять бегать по всем модулям?
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110315
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Наталья87
А как во все модули форм прописывать? Как дура и буду бегать по всем формам, дописывать везде в секцию USES
, ColorButton
?

Внезапно: бросаете на форму свой ColorButton и среда САМА прописывает его в секцию USES. Причём только в те формы, где он реально нужен.


А что делать со старыми формами? Где TButton, а не TColorButton? А этих форм сотни, т. к. в проекте более 400 тысяч строк кода?
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110316
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87А что делать со старыми формами? Где TButton, а не TColorButton? А этих форм
сотни, т. к. в проекте более 400 тысяч строк кода?

Поверьте, открыть их все и бросить TColorButton на каждую - заняло бы гораздо
меньше времени чем год хаков.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110319
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Наталья87А что делать со старыми формами? Где TButton, а не TColorButton? А этих форм
сотни, т. к. в проекте более 400 тысяч строк кода?

Поверьте, открыть их все и бросить TColorButton на каждую - заняло бы гораздо
меньше времени чем год хаков.


Никакого года на хаки не потрачено. Проект продолжает вестись и развиваться на базе 2007. Просто время от времени компилируется на XE8, сборка на XE8 уже почти не имеет глюков и
практически не хуже, чем на 2007. Надеюсь, перейду полностью на XE8 в скором времени, 2007 роднее конечно, но к XE8 тоже уже почти привыкла. Торопиться не стоит - надо сначала убедиться, что действительно багов серьезных нет - может, еще полгода подождать что скажут пользователи. А потом в очередной раз AutoIt-ом преобразую проект из D2007 на XE-8 и от 2007 уйду насовсем без всяких систем контроля версий. А то продолжать вести проект на 2007 и компилировать на XE8 это означает не использовать новые возможности, что появились в XE-8.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110321
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну-ну. До встречи ещё через год.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110330
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оооо, я не зря читал этот тред!
автор
Код: pascal
1.
{$IF not Declared(System.Classes)},System.Classes{$IFEND}


Не знал, что IF Declared работает с юнитами. Не знаю, правда, как это применять, но забавно.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110342
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
Например, поведение приложения при нажатии кнопки "Свернуть" (обсуждали уже здесь недавно). Притом, что все формы у меня модальные. Нужно чтобы при нажатии "Свернуть" в любом окне программы - сворачивалась программа целиком, а потом точно также аккуратно разворачивалась.

Из прочего - цветные кнопки (наследники TButton), цветные меню,
Для этого всего придумали наследование
Наталья87
А что делать со старыми формами? Где TButton, а не TColorButton? А этих форм сотни, т. к. в проекте более 400 тысяч строк кода?
Запоминайте
1. Создаете новый пакет.
2. В этом пакете создаете новый компонент
Код: pascal
1.
TColorButton = class(TButton)


3. Инсталлируете этот пакет
4. По всем pas и dfm файлов выполняете замену TButton -> TColorButton
5. Все.

Работы часа на два, если с перерывом на кофе
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110346
Наталья87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_

Работы часа на два, если с перерывом на кофе


Для Программиста - пожалуй, да.

А для быдлокодера - пожалуй, пару недель займёт :( зато мой проект из 400 000 строк на чистой D2007 компилируется. Думаю, в итоге приду к Вашему решению но уже после перехода на XE-8, в D2007 незачем уже огороды городить, надо с нее скорее уходить, 2021 год на дворе.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110352
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть и другой способ, без всяких инсталяций.
Код: pascal
1.
2.
3.
unit MyButton;
type
TButton = class(TColorButton)



И во всех модулях где нужно заменить TButton на TColorButton дописываем ВНАЧАЛО uses MyButton
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110358
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrИ во всех модулях где нужно заменить TButton на TColorButton дописываем ВНАЧАЛО
uses MyButton

....а потом начинаем топик "как запретить Delphi вставлять модули в секцию USES",
всё логично, да...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110363
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наталья87
...но уже после перехода на XE-8, в D2007 незачем уже огороды городить, надо с нее скорее уходить, 2021 год на дворе.

А на Delphi 11 - в 2031 году переходить, ага.
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110366
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наталья87
Для Программиста - пожалуй, да.
А для быдлокодера - пожалуй, пару недель займёт
Какой пункт у вас вызывает затруднения?
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110369
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr
дописываем ВНАЧАЛО uses MyButton
Все таки в КОНЕЦ. Но тут весь топик о том, как уйти от строгого порядка модулей в uses
...
Рейтинг: 0 / 0
Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
    #40110371
Michael Longneck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие-то бессмысленные метания. Если цель уйти на XE8 и там уже всё собирается, то докинуть пустых юнитов в старый проект, чтобы и он собирался и на этом всё. Другое дело что ни это, ни любые define не помогут если в dfm новые свойства пропишутся или ещё что такое. Поэтому надо уже перейти, а старый забыть.
...
Рейтинг: 0 / 0
25 сообщений из 60, страница 2 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запретить Delphi вставлять модули в секцию USES при компиляции и сохранении проекта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]