|
aleksmir
|
|
Как программу на VB разбить на модули?24.01.2012, 00:59. Показов 2064. Ответов 11
Метки нет (Все метки)
Может быть кто-нибудь сталкивался...
Имеется большой проект на VB. Его бы разбить на отдельные модули-кубики. Голову ломаю уже который год, а так ничего и не придумал. Если использовать ActiveX Dll, возникают большие проблемы: 1) при изменении одного маленького модуля приходится перекомпилировать весь большой exe-проект; 2) если от этого модуля зависят ещё и другие библиотеки, тут вообще начинается кошмар - приходится перекомпилировать ещё и остальные зависящие модули тоже. Статически подключаемые библиотеки VB5 создавать не умеет. Что делать не знаю. А exe-ник и сам проект всё разрастается. При любом даже самом маленьком изменении приходится перекомпилировать ВСЁ. И это ВСЁ каждый раз приходится передавать заказчику через Интернет. Неужели не придумано никаких механизмов, чтобы библиотеки не зависели от версий друг друга и сам EXE-ник тоже? Или может быть существуют какие-то другие механизмы разбивки на модули? Может быть кто-то знает что-то по этому поводу? |
|
| 24.01.2012, 00:59 | |
|
Ответы с готовыми решениями:
11
Как грамотно разбить программу на модули
Разбить программу на модули |
|
Comanche
|
||
| 24.01.2012, 09:40 | ||
RTFM, как говорится ![]() [bold]Она сохраняется, когда наряду с её включением в свойствах проекта ты... :[/bold] - ...добавляешь (в ActiveX-проект) новые классы с Instancing = MultiUse или GlobalMultiUse (назову их [italic]общедоступными[/italic]), - ...добавляешь в существующие [italic]общедоступные[/italic] классы новые [underline]публичные[/underline] (!) свойства и методы. [bold]Она НЕ сохраняется, когда наряду с её включением в свойствах проекта ты... :[/bold] - ...удаляешь (из ActiveX-проекта) [italic]общедоступные[/italic] классы, - ...удаляешь из [italic]общедоступных[/italic] классов [underline]публичные[/underline] свойства и/или методы, - ...изменяешь в [underline]публичных[/underline] свойствах и/или методах состав, порядок или тип аргументов, равно как и возвращаемых значений. Допустим, ты скомпилил самую первую "stable version" ActiveX DLL-ки. Ставь в свойствах проекта "binary compatibility" на созданный тобой DLL-файл. И сохраняй проект. После этого, [bold]соблюдая вышеописанные ограничения[/bold], ты можешь компилить новые версии библиотеки и отсылать их заказчику, будучи уверенным, что у того ничего не рухнет. Если же ты нарушишь любое из ограничений, то бэйсик сам напишет тебе, что, мол, кранты бинарной совместимости. Ну и, разумеется, отослав такое заказчику, ты устроишь ему "сюрприз" ![]() Это если вкратце... |
||
|
Comanche
|
|
| 24.01.2012, 09:43 | |
|
[underline]Примечание:[/underline] также почитай про "позднее связывание"... оно, конечно, не избавит тебя от проблем, если ты удалишь/модифицируешь публичный метод, который активно юзается в каком-то проекте, но всё-таки может оказаться полезным...
|
|
|
aleksmir
|
|
| 24.01.2012, 11:08 | |
|
Comanche, большое спасибо за информацию про Binary Compatibility.
Теперь хотя бы буду знать - зачем в настройках нужна была эта опция и может быть смогу применить её на практике, если не получится идея, которая пришла мне сегодня в голову: 1) весь огромный exe-шник преобразовываю в огромный DLL; 2) exe-ником делаю новый маленький проектик, к которому будут прицеплены все остальные библиотеки ActiveX DLL, в том числе и огромный DLL; 3) exe-ник при запуске будет инициализировать каждую библиотеку и каждой передаст ссылки (типа Object) на другие библиотеки; 4) теперь при изменении одной библиотеки мне придётся перекомпилировать ТОЛЬКО маленький exe-ник и саму библиотеку! Пока нашёл два минуса: 1) редактор VB не сможет предоставлять список процедур и функций при нажатии на точку после имени объекта, ссылающегося на библиотеку; 2) компилятор VB не сможет контролировать имена процедур, функций и их аргументов при создании DLL. Но меня эти минусы пока не останавливают. Иногда приходится жертвовать чем-то меньшим ради чего-то более главного. Ещё большое спасибо этому форуму! Всё-таки коллективный разум - великая вещь. Только задал вопрос в форум - в голову стали приходить идеи по решению заданного вопроса. |
|
|
aleksmir
|
|
| 24.01.2012, 11:21 | |
|
Кстати, насчёт Binary Compatibility идея тоже довольно не плохая.
Сейчас подумал... Ограничение при изменении аргументов можно обойти, если старые функции не удалять, а добавлять новые функции с расширенным набором аргументов. |
|
|
Comanche
|
|
| 24.01.2012, 11:22 | |
|
Нет, тебе пришла в голову неважная идея. Не делай так.
То, что я тебе описАл, - подход, успешно используемый во многих приложениях, в том числе - и в сложных, коммерческих, "профессиональных" и т.п. И от этого никуда не уйти: раз уж ты пользуешься технологией COM (а вынося куски кода в ActiveX-компоненты ты именно ей и пользуешься!), то ты должен блюсти COM-интерфейсы, что применительно к бэйсику выливается в возню с "бинарной совместимостью" и соблюдение вышеописанных правил. Насчёт "умной точки" в редакторе VB IDE. Распространённая практика - отлаживать проект в раннем связывании, пользуясь "умной точкой" и Броузером Объектов. А по завершении отладки - переходить на позднее, что сводится к не слишком сложным модификациям кода. |
|
|
Comanche
|
|
| 24.01.2012, 11:23 | |
|
Ты меня опередил. То, что я написАл, - относится к твоему ответу от 16.11.2005 10:31.
|
|
|
Comanche
|
||
| 24.01.2012, 11:24 | ||
)
|
||
|
aleksmir
|
||
| 24.01.2012, 11:45 | ||
![]() А то без "умной точки" и правда будет тяжко... |
||
|
aleksmir
|
||
| 25.01.2012, 09:24 | ||
|
||
|
Comanche
|
||
| 25.01.2012, 09:35 | ||
|
Только вот поправлю сам себя:
|
||
|
aleksmir
|
||
| 25.01.2012, 14:38 | ||
Я уже применил "бинарную совместимость" к своему проекту. Всё отлично работает! Новый заказ делаю уже в отдельном модуле. Очень удобно! Спасибо ещё раз! |
||
| 25.01.2012, 14:38 | |
|
Помогаю со студенческими работами здесь
12
Программу разбить на модули Разбить программу на модули Разбить программу на модули
Как разбить проект на модули? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|