SQLRU.net
Разработка приложений баз данных

Начало » Программирование » Delphi » Unit1 in 'Unit1.pas' (вот те на)
Unit1 in 'Unit1.pas' [сообщение #3930] Tue, 19 December 2023 15:16 Переход к следующему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 142
Зарегистрирован: August 2022
Senior Member
Оказывается, конструкция
uses
    Unit1 in 'Unit1.pas';
работает только в модулях типа program и library. В ординарных юнитах компилятор, увидев in, показывает фигу.

Казалось бы, вот почему бы ему не делать единообразно, уж коли придумали такой синтаксис? Только я собрался разрулить версии таким удобным способом, ан нет.

Delphi XE3. Нет желания проверять на других версиях, но что-то мне подсказывает, что это и везде так.

[Обновления: Tue, 19 December 2023 15:44]

Известить модератора

Re: Unit1 in 'Unit1.pas' [сообщение #3934 является ответом на сообщение #3930] Tue, 19 December 2023 16:47 Переход к предыдущему сообщениюПереход к следующему сообщению
МорскойДесант в настоящее время не в онлайне  МорскойДесант
Сообщений: 195
Зарегистрирован: September 2022
Senior Member
shalamyansky писал(а) Tue, 19 December 2023 15:16
Оказывается, конструкция
...
Delphi XE3. Нет желания проверять на других версиях, но что-то мне подсказывает, что это и везде так.
Зачем проверять, если в документации явно сказано:

In the uses clause of a program or library, any unit name may be followed by the reserved word in and the name of a source file, with or without a directory path, in single quotation marks; directory paths can be absolute or relative.
...
In the uses clause of a unit, you cannot use in to tell the compiler where to find a source file. Every unit must be in the compiler's search path.


ЗЫ: в документации ещё много чего интересного.  8)
Re: Unit1 in 'Unit1.pas' [сообщение #3935 является ответом на сообщение #3934] Tue, 19 December 2023 18:38 Переход к предыдущему сообщениюПереход к следующему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 142
Зарегистрирован: August 2022
Senior Member
Понятно. Законно, но не логично.

Жаль. Удобно было бы переключаться на разные версии юнитов и библиотек, не шуруя с путями:
uses
  lib_unit
  {$IFDEF LIB_VERS_2}in '/vers2/lib_unit.pas'{$ENDIF}
  {$IFDEF LIB_VERS_3}in '/vers3/lib_unit.pas'{$ENDIF}
;

[Обновления: Tue, 19 December 2023 18:47]

Известить модератора

Re: Unit1 in 'Unit1.pas' [сообщение #3962 является ответом на сообщение #3935] Thu, 21 December 2023 15:48 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 345
Зарегистрирован: August 2022
Senior Member
Может, стоит освоить работу с системами контроля версий?..
Re: Unit1 in 'Unit1.pas' [сообщение #3963 является ответом на сообщение #3935] Thu, 21 December 2023 15:49 Переход к предыдущему сообщениюПереход к следующему сообщению
DarkMaster в настоящее время не в онлайне  DarkMaster
Сообщений: 33
Зарегистрирован: August 2022
Member
Ну никто не отменял:
uses
 lib_unit,
 {$ifdef LIB_VER2} unit_v2 {$endif}
 {$ifdef LIB_VER3} unit_v3 {$endif}
;


Re: Unit1 in 'Unit1.pas' [сообщение #3964 является ответом на сообщение #3962] Thu, 21 December 2023 21:05 Переход к предыдущему сообщениюПереход к следующему сообщению
shalamyansky в настоящее время не в онлайне  shalamyansky
Сообщений: 142
Зарегистрирован: August 2022
Senior Member
SD писал(а) Thu, 21 December 2023 15:48
Может, стоит освоить работу с системами контроля версий?..
Иронично, едко, но не в тему. VCS занимаются управлением версиями собственных творений. Задачу переключения по щелчку разных версий сторонних библиотек они не решают. Могли бы решать, если бы ссылка на библиотеку вместе с её расположением задавалась бы кодом, а не только настройками среды. Но эта возможность выключена, см. топик. В принципе можно менять через опцию проекта SearchPath, это стандартный способ. Однако через DEFINE быстрее, проще, универсальнее и мнемоничнее, прошу прощения за мой французский. Но не канает. Ну и ладно.
Re: Unit1 in 'Unit1.pas' [сообщение #3965 является ответом на сообщение #3964] Fri, 22 December 2023 01:38 Переход к предыдущему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 345
Зарегистрирован: August 2022
Senior Member
Подключаешь стороннюю библиотеку как субмодуль. Одной командой переключаешь её между версиями. В одном каталоге. Никаких изменений не требуется. Никакой иронии, обычный рабочий процесс.
Предыдущая тема: TForm.HandleAllocated
Следующая тема: Конвертация координат
Переход к форуму:
  


Текущее время: Sat Apr 27 21:16:30 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00743 секунд