Предположим, есть некий кусок схемы, который повторяется в разных местах программы. Т.к. в программе много контейнеров и прочих элементов, тянуть из разных мест связи к этому повторяющемуся куску неудобно. Дублировать схему в разных местах не хочется, дабы не раздувать размеры программы.
Можно ли поместить повторяющийся кусок схемы в некий контейнер и вызывать его аля dll?
упрощённый пример
code_30566.txt
Этот топик читают: Гость
Ответов: 95
Рейтинг: 2
|
|||
карма: 0 |
| ||
файлы: 1 | code_30566.txt [1.6KB] [42] |
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Сторонний компонент похожий был, вроде как Function называется. Но я, к примеру, пользуюсь ссылкой на элемент контейнера, тогда изменения в основном контейнере отражаются во всех ссылочных (кроме комментариев, их можно менять)
------------ Дoбавленo в 16.45: Вот, как-то так
|
|||
карма: 22 |
| ||
Голосовали: | tom-it |
Ответов: 95
Рейтинг: 2
|
|||
nesco писал(а): пользуюсь ссылкой на элемент контейнераа в конечном (скомпилированном) коде программы такие ссылки являются именно удаленным обращением к оригиналу контейнера? или при компилировании все ссылки заменяются копиями оригинального контейнера? |
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Abracadabra писал(а): или при компилировании все ссылки заменяются копиями оригинального контейнера?Нет, просто создается необходимое количество экземпляров класса твоего контейнера после запуска приложения, но код контейнера один -- тот, что оригинальный. Это, как бы, размножение кода твоего контейнера в памяти после запуска. ------------ Дoбавленo в 17.17: Вот насчет компонента Function, то его нельзя лепить внутрь контейнера, тк он построен по технологии менеджера, и цепляется к контейнеру извне. Те у компонентов Function и CallFunction иерархия снизу-вверх -- CallFunction должен быть на том же уровне или ниже, нежели компонент Function, но не наоборот |
|||
карма: 22 |
|
Ответов: 95
Рейтинг: 2
|
|||
а какие ещё могут быть доводы в пользу ссылок или CallFunction?
скорость выполнения, размер конечной программы, объём занимаемой памяти при прочих равных,...? пытаюсь решить для себя, чем лучше пользоваться. |
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Abracadabra писал(а): скорость выполнения, размер конечной программы, объём занимаемой памяти при прочих равных,...?У ссылок будет выше скорость выполнения, но больший объем занимаемой память при меньшем размере конечной программы. Ссылки сделаны на уровне среды и кодогенератора и не являются отдельными компонентами как Function, те будут отсутствовать ненужные интерфейсные преобразования, и они не будут ограничены иерархией |
|||
карма: 22 |
| ||
Голосовали: | Abracadabra |
Ответов: 95
Рейтинг: 2
|
|||
Имеет ли смысл делать ссылки на отдельные элементы?
Например, в нескольких местах схемы происходит считывание одного и того же ключа из ini. Стоит ли вместо отдельных компонентом Ini раскидать по схеме ссылки? вижу явное преимущество с точки зрения дальнейшей разработки программы: если решу изменить название ключа/секции/файла нет риска пропустить один из компонентов. Но как это отразиться на скорость выполнения, размер конечной программы, объём занимаемой памяти при прочих равных,...? |
|||
карма: 0 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Abracadabra писал(а): Например, в нескольких местах схемы происходит считывание одного и того же ключа из ini. |
|||
карма: 25 |
|
Ответов: 95
Рейтинг: 2
|
|||
Tad писал(а): Считываем при запуске и помещаем в GlobalVar.Это был просто пример. Вопрос в том, на сколько ссылки на компонент лучше/хуже повторения компонента? ------------ Дoбавленo в 21.58: речь конечно о простых компонентах, а не о контейнерах ------------ Дoбавленo в 23.11: вот небольшой кусок реальной схемы
Или всё же использование ссылок оправдано лишь с контейнерами? |
|||
карма: 0 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Abracadabra писал(а): Но как это отразиться наЕМНИП, то никак, то же самое получится -- что создавать отдельный класс с новыми параметрами, что создавать очередной экземпляр какого-то оригинального класса |
|||
карма: 22 |
|
Ответов: 1058
Рейтинг: 76
|
|||
nesco писал(а): пользуюсь ссылкой на элемент контейнераНикогда о таком не слышал. Компонента с таким функционалом не встречал, или может просто не знал о его функционале. Поподробней можно? Где и как эту ссылку найтисделать. ------------ Дoбавленo в 01.43: Аааа, нашел уже. Если бы здесь не услышал, никогда бы и не догадался для чего оно. |
|||
карма: 0 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Тогда приготовься к тому, что среда будет иногда и падать. В самые непредсказуемые моменты
------------ Дoбавленo в 07.18: Хотя вряд ли "линк" -- это полноценный выход из положения. Иногда очень хочется работать именно с тем же экземпляром класса из разных мест. Скажем, это COM-порт... Да мало ли чего еще может быть. Не заморачиваясь не только "прокладкой кабелей", но и с возвратом результата(ов). Нет такого средства, к сожалению |
|||
карма: 9 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Galkov писал(а): Тогда приготовься к тому, что среда будет иногда и падать. В самые непредсказуемые моментыБывает такое, особенно на больших схемах. Да, кстати, а ты не в курсе, случаем, почему это происходит |
|||
карма: 22 |
|
Ответов: 9906
Рейтинг: 351
|
|||
Нет.
В памяти сидит что-то, что это сильно связано с Z-ордером. Типа, если среда пытается работать с линком, а элемент-оригинал она "еще не знает". Ничего конкретного не знаю, в общем. И почему это настолько неисправимо - тоже. |
|||
карма: 9 |
|
Разработчик
Ответов: 26170
Рейтинг: 2127
|
|||
Ясно, короче -- темный лес.
|
|||
карма: 22 |
|
15