Реально ли как то объявлять функции в IC, глобально, для использования их в других блоках IC?
Использовать uses не вариант, ибо нужно что бы весь код был именно в проекте.
Редактировалось 2 раз(а), последний 2020-01-11 16:05:29
Этот топик читают: Гость
Ответов: 1343
Рейтинг: 31
|
|||
карма: 2 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Я не понял конечно чем uses не устраивает но как вариант
|
|||
карма: 4 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Сами то функции может быть и не столь интересны а вот вызов методов других IC тоже ничего сложного
|
|||
карма: 4 |
|
Ответов: 1343
Рейтинг: 31
|
|||
andrestudio, спасибо, буду разбираться.
uses не подходит тем, что перед компиляцией, в коде IC меняются данные некоторые, и если IC засунуть в hiasm, в качестве библиотеки, она будет одна на все проекты, а если это останется как IC, то он изолирован ото всех. жаль что когда то так и не придумали вариант, как вынести некоторые данные за пределы IC, дабы их менять уже в откомпилированом проекте ![]() DVR_DEVICE_NAME='123'; DRIVER_SVC_NAME='123'; function IRME(): DWORD; begin Result:=CTL_CODE($9562, $2700, 0, 1 or 2); end; разных модулей с одним и тем же содержимым очень много, хотел их главную часть собрать в 1 кучу, дабы уменьшить код проекта, потому как само сердце модуля одно и тоже, а вот мелкие кусочки уже разные, делать их как то более универсальными смысла нет, потому как важно сохранить минимализм во всём Редактировалось 4 раз(а), последний 2020-01-12 09:21:21 |
|||
карма: 2 |
|
Ответов: 1343
Рейтинг: 31
|
|||
каким образом можно объявить в IC, глобальную переменную для всех IC ?
Редактировалось 2 раз(а), последний 2020-04-29 13:27:43 |
|||
карма: 2 |
|
Ответов: 2059
Рейтинг: 132
|
|||
Rysik, вот так:
Предвидя дальнейшее развитие событий, советую прикручивать в таких случаях скриптовые языки LUA, Python к своим проектам. Редактировалось 2 раз(а), последний 2020-04-29 14:04:48 |
|||
карма: 6 |
|
Ответов: 1343
Рейтинг: 31
|
|||
flint2 писал(а): Rysik, вот так:
unit Gvaruse; interface var IFS3: Integer; DIMBL : array[0..20] of integer; implementation end. Делаешь Gvaruse.pas и где хочешь юзать, там и вставляешь: uses Kol,Gvaruse,Share; Спасибо, попробую |
|||
карма: 2 |
|
Ответов: 4638
Рейтинг: 755
|
|||
Можно создать один IC, содержащий все необходимые методы и глобальные данные. Выбрать меню "Правка"-"Копировать ссылку", и "Вставить" в нужные места. Тогда все вставленные копии могут использовать общие данные. Если это работает с IC. Но в копиях тогда ничего нельзя будет менять.
Редактировалось 1 раз(а), последний 2020-05-01 11:54:47 |
|||
карма: 26 |
|
Ответов: 1343
Рейтинг: 31
|
|||
Хотел загнать Handle например, во все нужные IC, дабы не таскать за собой никакие Gvar или же линии
|
|||
карма: 2 |
|
Ответов: 1926
Рейтинг: 172
|
|||
Rysik, а код hiGlobalVar.pas не смотрел? Я в своей программе брал его за основу для таких "суперглобальных" переменных. Вот как пример суперглобальной переменной и процедуры:
Возможно, знатоки подскажут, где что можно упростить или улучшить. |
|||
карма: 9 |
| ||
Голосовали: | Rysik |
Ответов: 1343
Рейтинг: 31
|
|||
3042 писал(а): Чтобы лучше понимать, надо разобраться с кодом hiGlobalVar.pas - там ключ ко всему.пытался, но как то не сложилось, твой код заюзал, но дабы упростить, просто загоняю данные в переменную по классике а использую уже прямиком в IC) отлично работает ![]() |
|||
карма: 2 |
|
Ответов: 207
Рейтинг: 14
|
|||
Подскажите как запустить из одного IC, событие в другом IC (_hi_OnEvent)?
Или это плохая затея? Редактировалось 1 раз(а), последний 2020-11-02 13:25:58 |
|||
карма: 2 |
|
Ответов: 4638
Рейтинг: 755
|
|||
В том IC, который вызывает, нужно получить ссылку на объект другого IC.
Вызвать как _hi_OnEvent(ic2.onMyEvent). А чтобы получить ссылку, второй IC должен куда-то глобально сохранить Self, откуда первый IC её прочитает. |
|||
карма: 26 |
|
Ответов: 207
Рейтинг: 14
|
|||
Netspirit, Спасибо, но без примера не осилю, пол дня уже долблюсь
![]() |
|||
карма: 2 |
|
Ответов: 5227
Рейтинг: 587
|
|||
Joiner, сделай Unit с классом, в нём сделай propety Event с парами функций типа GetEvent и SetEvent и передавай/читай ссылки как посоветовал коллега Netspirit. Можно и без класса с глобальной переменной но это только если твои хотелки между двумя IC
|
|||
карма: 4 |
|