LPK: совпадения имен файлов.
Модератор: Модераторы
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
inc это просто выделенный в отдельный файл кусок программы.
Параметры компиляции - это когда выравнивание отличается или размер записей или сетов - т.е. когда по одним и тем же исходникам компилятор генерит не совместимый код. По моему мнению))
У вас на лицо обычная условная компиляция, да еще и в одном месте, да еще и крохотный фрагментик))
Правильное решение это ваш вариант 1
1.1 - сделать in0k_lazIdeSRC_SourceEditor_onActivate___inFocusONLY параметром соответствующего класса и плясать как надо в рантайме. ИМХО не красиво
1.2 - сделать то что завернуто в in0k_lazIdeSRC_SourceEditor_onActivate___inFocusONLY отдельной процедурой (для полного удовлетворения в отдельном модуле), сделать в классе пропертю OnIn0KActivate, ее вызов поместить на место где было завернуто. Соответственно экземпляр имеющий\неимеющий обработчик OnIn0KActivate будет вести себя как требуется. ИМХО самый правильный вариант
У вас на лицо обычная условная компиляция, да еще и в одном месте, да еще и крохотный фрагментик))
Правильное решение это ваш вариант 1
1.1 - сделать in0k_lazIdeSRC_SourceEditor_onActivate___inFocusONLY параметром соответствующего класса и плясать как надо в рантайме. ИМХО не красиво
1.2 - сделать то что завернуто в in0k_lazIdeSRC_SourceEditor_onActivate___inFocusONLY отдельной процедурой (для полного удовлетворения в отдельном модуле), сделать в классе пропертю OnIn0KActivate, ее вызов поместить на место где было завернуто. Соответственно экземпляр имеющий\неимеющий обработчик OnIn0KActivate будет вести себя как требуется. ИМХО самый правильный вариант
Лекс Айрин писал(а):inc это просто выделенный в отдельный файл кусок программы.
эм ... а что тогда unit?
inc-файлы я всегда воспринимал ... некими отдельными файлами НЕ учитывающимися компилятором (участвуют в "препроцессинге", но не работают на этапе компиляции)
Добавлено спустя 9 минут 19 секунд:
zub писал(а):У вас на лицо обычная условная компиляция
но она генерит НЕ совместимый код
zub писал(а):Правильное решение это ваш вариант 1
но как тогда быть с "атомарностью" пакета?
по себе знаю ... что ставить "левые" пакеты для установки какой-то "фигни" ... я должен быть ОЧЕНЬ заинтересован (вот ради VirtualTree я готов помучаться ... и поискать и покачать) ...
но ради моих поделок ... искать и ставить еще 3-4 доп компонента ... я бы пожалуй отказался
>>но она генерит НЕ совместимый код 
она генерит совместимый код, чуток отличающийся в реализации. и по сути в данном случае не нужна
>>но как тогда быть с "атомарностью" пакета?
Никак не быть, так и должно быть. Зачем вам 2 разных варианта одного и тогоже? одинаковый "код" должен быть в одной копии
>>но ради моих поделок ... искать и ставить еще 3-4 доп компонента ... я бы пожалуй отказался
Предложу довести поделки до уровня чтоб не отказывались))
она генерит совместимый код, чуток отличающийся в реализации. и по сути в данном случае не нужна
>>но как тогда быть с "атомарностью" пакета?
Никак не быть, так и должно быть. Зачем вам 2 разных варианта одного и тогоже? одинаковый "код" должен быть в одной копии
>>но ради моих поделок ... искать и ставить еще 3-4 доп компонента ... я бы пожалуй отказался
Предложу довести поделки до уровня чтоб не отказывались))
iN0k писал(а):2. Ручной копи-Паст, т.е. в пакете A.lpk есть юнит UnitA.pas, в B.lpk юнит UnitB.pas. Содержимое этих юнитов ОДИНАКОВО, но за счет условной компиляции юниты "ведут" себя по разному. Неудобство в том, что исправив ошибку в одном из них, мне приходится руками копировать изменения в другой. И эта ручная синхронизация утомляет, повозившись с двумя и поняв что тоже самое теперь надо делать для трех ...
Дык, а если самому написать консольную программку и включить её перед компилятором (см. скрин), чтобы она тупо копировала UnitA.pas в UnitB.pas? Или тут даже cmd.exe или какой bat-ник прокатит?
Тут конечно еще сразу моменты. Мы ж не знаем, какой файл будете править. Чтобы программка сравнивала время правки и копировала только тот, что новее. Или при копировании один делать read only, и править только второй?
Добавлено спустя 7 минут 44 секунды:
Ха! Забыл, в Windows же уже давно присутствуют симлинки!
Создать линк на тот файл и всё, не?
https://geektimes.ru/post/50878/
Коммент с хабра "...использую одни и те же файлы, часто (например для CakePHP) их может быть очень много. Чтобы не копировать их из проекта в проект и легко модифицировать, я использую ссылки."
з.ы. Я их делал Far-ом
з.з.ы. Но я бы наверное выбрал реальное копирование, чем линк.
Добавлено спустя 3 минуты 21 секунду:
iN0k писал(а):некими отдельными файлами НЕ учитывающимися компилятором
Какой бы тогда был кайф работать с такими?
И мне кажется вы ошибаетесь, ведь копаясь в исходниках в редакторе кода, Лазарус меня приводит в том числе и в inc файлы.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
iN0k писал(а):эм ... а что тогда unit?
Это обособленная единица компиляции.
resident писал(а):И мне кажется вы ошибаетесь, ведь копаясь в исходниках в редакторе кода, Лазарус меня приводит в том числе и в inc файлы.
ну ... тут я думаю работает Lazarus, это он на лету ищет файлы и показывает их ...
я тут попробовал свой
3.а. UnitС.pas превращаем в UnitС.inc, в каждом пакете снова создаем соответствующие юниты UnitА.pas и UnitВ.pas, в которых пишем {$i UnitС.inc} ...
оно работает
буду пробовать перекорячить все в таком стиле, но что-то мне подсказывает ... что это тоже опа и большая
Добавлено спустя 13 минут 36 секунд:
resident писал(а):Дык, а если самому написать консольную программку и включить её перед компилятором (см. скрин), чтобы она тупо копировала UnitA.pas в UnitB.pas? Или тут даже cmd.exe или какой bat-ник прокатит?
блин ... да ... как вариант ... спасибо ... буду думать
>>но что-то мне подсказывает ...
Правильно подсказывает. Ненадо "ухитрятся" на ровном месте.
С такими "выкрутасами" ваши творения точно пользователю не приглянутся
Правильно подсказывает. Ненадо "ухитрятся" на ровном месте.
С такими "выкрутасами" ваши творения точно пользователю не приглянутся
