Windows 32-bit series (demonstration [trial] version with limited functions), Select one. Contains four files (vcl50.bpl, cc3250mt.dll, cc3250.dll, borlndmm.dll). Access violation at address 4003AB4 in module 'Vcl50.bpl'.. Since freeing the ObjectList will automatically free the objects contained in that list, Your code. Delphi XE2 access violation in Win 7 64 bits but not in Win 8. На Windows 7 работает любая версия Delphi - от Delphi 1 до Delphi у меня ОШИБКА! вот скажите почему у меня требует rtl70. bpl!@! . BPL being missing. Delphi 5 runtime library - VCL50.BPL. BPL; The Microsoft Common Control Library - COMCTL32.. Now includes Delphi interface units (source) and build instructions for using the free Borland C++ . Exception EOleSysError in module vcl50. bpl at 0001a239. Для Windows 7 командную строку нужно запустить из контекстного меню. Средства командной строки не позволяют читать реестр Windows, поэтому Например, в приведенном выше примере при сборке Doc5. bpl make. Использование bpg- файлов для пакетной компиляции. Использование bpg- файлов для пакетной компиляции© 2. Это версия для Windows. Другие версии удобно искать через поиск по сайту. Описание. Английский. Лицензия. Freeware (Бесплатная). Версия. rtl120.bpl + rtl100.bpl, rtl90.bpl, rtl70.bpl. 3) Exception EOleSysError in module vcl50.bpl at 0001a239. Regsvr32 — это служебная программа командной строки для регистрации и отмены регистрации элементов управления OLE, например ActiveX и библиотеки DLL в реестре Windows.. Иван Равин. При работе с большими проектами появляется потребность в их разбиении на более мелкие специализированные модули. Например, нередко "релиз" программы включает в себя исполняемый файл, а также набор библиотек. Это могут быть динамически загружаемые библиотеки (dll), Active. X библиотеки, пакеты (bpl). Delphi предоставляет механизм группировки проектов, собирая их в Project Group – файлы (. Открыв такой файл, можно собрать большой проект, выполнив команду Project - > Build All Projects. При должной настройке каталогов в проектах (см. Vcl100.bpl free download. Fix errors. Скачать vcl100.bpl для Windows XP, Vista, 7, 8.1, 10 бесплатно. vcl50.bpl, Borland Component Package, 2013-5-31.Delphi. Plus. org) мы в результате сборки получаем готовый релиз, из которого дальше можно готовить дистрибутив. Казалось бы, что еще надо? А надо исключить "ручной" этап подготовки дистрибутива. Сборка файлов, генерация баз могут быть выполнены с помощью bat – файлов и скриптов. Средства дополнительной обработки модулей (например, установка защиты, архивирование, сборка инсталлятора) также могут работать из командной строки. А вот выполнение команды Build All Projects требует открытия Delphi, да еще, чтобы у текущего пользователя были установлены все необходимые компоненты (даже если они есть на компьютере, это еще не значит, что они есть на палитре у конкретного пользователя). Плюс, возможно, необходима ручная установка флагов компиляции для того или иного вида дистрибутива. Все это можно автоматизировать, написав пакетный файл для компиляции нашей группы проектов с помощью компилятора командной строки dcc. Но и тут возникают проблемы: надо будет отслеживать соответствие между нашей группой проектов и этим bat- файлом. Лучше всего исключить эту зависимость, написав универсальный bat- файл, который будет использовать информацию из файла группы проектов. Взглянем на такой файл (дальше речь пойдет об использовании групп проектов до Delphi. Начиная с Delphi. Возможно, стоит попробовать применить результаты данной статьи с использованием XML средств сборки, например, Ant. Итак, откроем в текстовом редакторе простейший файл bpg. VERSION = BWS. 0. ROOTROOT = $(MAKEDIR)\.! MAKE = $(ROOT)\bin\make. MAKEFLAGS) - f$**DCC = $(ROOT)\bin\dcc. BRCC = $(ROOT)\bin\brcc. PROJECTS = Project. PROJECTS)#- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -Project. Project. 1. dpr$(DCC). Кто хоть раз работал с утилитой MAKE, сразу скажет, что это make- скрипт. Что мы тут видим. Несколько макроопределений. ROOT – указывает на каталог запуска утилиты MAKE. Для Delphi это каталог Bin. Незадействованное в данном случае макроопределение MAKEМакроопределения для компиляторов DCC и BRCCМакроопределение PROJECTS, где в нужном порядке перечислены все проекты вашей группы проектов. Действие, которое необходимо выполнить, когда MAKE запущена без конкретного задания (default) – в данном случае выполняется сборка всех проектов, указанных в макроопределении PROJECTS. Явные правила для сборки каждого из проектов: указывается целевой файл, базовый файл и действия, для получения результата из базового файла. Как видно, происходит запуск компилятора dcc. Например, для проекта Project. Project. 1. dpr. Вот и решение: нужно выполнить команду "make - f Project. Group. 1. bpg" и группа скомпилируется. Но не тут- то было. На первом же проекте вы получите ошибку, что компилятор не может найти тот или иной файл. Скорее всего, это VCLx. Почему же все компилируется в Delphi? А потому, что Delphi знает, где искать нужные файлы: в путях из переменной среды Library Path, значение которой записано в реестре. Средства командной строки не позволяют читать реестр Windows, поэтому создадим make- файл Compsearch. HKCU\Software\Borland\Delphi\x. Library\Search Path". Можно этот файл структурировать, например так. Compsearch. mki > BROOT = c: \borland\delphi. BORLAND = $(BROOT)\Objrepos; $(BROOT)\Projects\Bpl. ICS = C: \VCL\ics\DELPHI\D5. MIDWARE = C: \VCL\midware\DELPHI\D5. JVCL = C: \VCL\jvcl\lib\D5; C: \VCL\jcl\lib\D5; C: \VCL\jvcl\common. LIBPATH = $(JVCL); $(ICS); $(MIDWARE); $(BORLAND)RESPATH = C: \VCL\JVCL\Resources. Вернемся к нашей группе проектов. Добавим несколько строк. Вот кусочек текста. MAKE = $(ROOT)\bin\make. MAKEFLAGS) - f$**DCC = $(ROOT)\bin\dcc. Comp. Search. mki# Корень проекта. ROOTDIR = c: \work# каталог с этим файлом и файлом compile. SRCROOTDIR = $(ROOTDIR)\source# Опции компилятора. COMPILER = 5. DCP_DIR = $(ROOTDIR)\DCUDCU_DIR = $(ROOTDIR)\DCU\$(COMPILER)DCCOPT = - LN$(DCP_DIR) - i$(LIBPATH) - n$(DCU_DIR) - u$(DCU_DIR); $(LIBPATH) \- r$(RESPATH) \- w- - h- - b - q# Переопределение стандартного макроса DCCDCC = $(DCC) $(DCCOPT)BRCC = $(ROOT)\bin\brcc. Мы добавили макроопределения путей к библиотекам: ! Comp. Search. mki; Определили ряд дополнительных рабочих каталогов ROOTDIR, DCP_DIR, DCU_DIR – в данном случае DCP- файлы попадают в c: \work\DCU, а DCU- файлы в c: \work\DCU\5; Дополнили определение макроса DCC опциями компилятора (я включил флаги компиляции - w- - h- - b –q, чтобы подавить лишний вывод – будем считать, что отладка проектов была произведена в интерактивном режиме, при сборке релиза нас уже не интересуют предупреждения компилятора)Если вы создали заранее все каталоги (DCP_DIR, DCU_DIR, а также те, что указаны в Output Directory проектов), то, возможно, этого будет достаточно для компиляции вашей группы проектов. При этом Delphi по- прежнему сможет работать с вашим bpg- файлом, не изменяя введенной вами информации. Но, если проекты лежат в отдельных каталогах, компиляция не будет выполнена. Посмотрим на правило из более сложного файла bpg. Doc. 5. bpl: .\Common\Document\Doc. DCC). Посмотрим также на сам файл проекта Doc. Оказывается, что файлы записаны в проекте с относительными путями, поэтому, чтобы сработал макрос DCC, необходимо перейти в каталог проекта, выполнить компиляцию и вернуться обратно, например, так. Doc. 5. bpl: .\Common\Document\Doc. CD Common\Document$(DCC)CD .\.\. Можно ли переопределить макрос DCC так, чтобы не писать эти строки? Все макросы представляют собой "строчные" команды. В то же время выполнение 3 DOS- команд в одной строке невозможно. Поэтому мы не сможем нужным образом переопределить макроподстановку DCC, и нам придется добавлять строчки с командой CD в каждое make- правило. При большом количестве проектов это неудобно, да и неизвестно, сможет ли Delphi работать с таким файлом. Есть ли выход? В Project Jedi VCL была создана специальная утилита конвертации Bpg. Как окажется далее, достаточно будет добавить только 1 строчку в bpg- файл. Идея заключается в подмене макроса DCC таким образом, чтобы в нем вызывался bat- файл, который. А в самом bpg- файле должна быть сделана такая подстановка (о назначении 2 параметра будет сказано позже). DCC = compile. bat $** $(SRCROOTDIR). В результате, в файл compile. Например, в приведенном выше примере при сборке Doc. Common\Document\Doc. Source. Остается в этом bat- файле вычислить каталог, перейти в него и выполнить компиляцию проекта. Обратный переход был бы нужен, если бы вызов выглядел так. DCC = call compile. Common\Document\Doc. В данном же случае командный интерпретатор избавляет нас от необходимости обратного перехода. Однако средствами командной строки сложно из строки выделить путь. Оказывается, это может сделать утилита Make с помощью модификаторов макроса $**. D) – каталог исходного файла$(**F) – базовое имя файла и расширение. Как ими воспользоваться? Предлагается из пакетного файла Compile. Итак, bat- файл оказался несложным (тут нам понадобится параметр №2 – каталог с файлом compile. Осталось подготовить универсальный скрипт compile. D)$(ROOT)\bin\dcc. F) $(DCCOPT) # неявное правило для всех файлов с расширением dpkdummy. D)$(ROOT)\bin\dcc. F) $(DCCOPT). Итак, что же мы получим при сборке нашего примера? В Project. Group. Doc. 5. bpl развернется в вызов. Compile. bat .\Common\Document\Doc. В Compile. bat команда будет развернута следующим образом. Common\Document\Doc. В файле compile. mak правило для dpkdummy будет развернуто следующим образом. Common\Document$(ROOT)\bin\dcc. Doc. 5. dpk $(DCCOPT). ROOT и DCCOPT). Согласно неявному правилу . F) развернулось в нужную нам строку Doc. Задача выполнена. В этих же неявных правилах можно описать обработку флагов компиляции и пост- обработку откомпилированных файлов. Остается одна хитрость. В начале данной статьи было показано, как в bpg файл добавить нужные каталоги. Пока этот файл один, проблем нет. Когда их много, почему бы не сделать все это один раз в каком- нибудь include- файле? Например, в уже известном нам compile. Заодно можно в нем же переопределить макрос DCC. Вот что получается. Вставить в . bpg после объявления DCC, и до описания правил: # ! ROOTDIR = c: \work# каталог с этим файлом и файлом compile. SRCROOTDIR = $(ROOTDIR)\source # файл с путями к библиотекам! SRCROOTDIR)\Comp. Search. mki# Переопределение стандартного макроса DCC DCC = $(SRCROOTDIR)\compile. SRCROOTDIR)#- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -# Опции компилятора. COMPILER = 5. DCP_DIR = $(ROOTDIR)\DCUDCU_DIR = $(ROOTDIR)\DCU\$(COMPILER)DCCOPT = - LN$(DCP_DIR) - i$(LIBPATH) - n$(DCU_DIR) - u$(DCP_DIR); $(LIBPATH) \- r$(RESPATH) \- w- - h- - b - q#- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -# неявное правило для всех файлов с расширением dprdummy. D)$(ROOT)\bin\dcc. F) $(DCCOPT) # неявное правило для всех файлов с расширением dpkdummy. D)$(ROOT)\bin\dcc. F) $(DCCOPT). Сюда же можно включить содержимое файла Compsearch. Структура же рабочих каталогов при использовании репозитория будет на всех компьютерах одинаковой (ROOTDIR, SRCROOTDIR и т. Итак, один раз готовим файлы Compsearch. Compile. bat и Compile. ROOTDIR) – и проблема автоматической компиляции решена. Остается добавить в ваш bpg- файл единственную строчку (где- то после определения DCC). VERSION = BWS. 0. ROOTROOT = $(MAKEDIR)\.! MAKE = $(ROOT)\bin\make. MAKEFLAGS) - f$**DCC = $(ROOT)\bin\dcc. BRCC = $(ROOT)\bin\brcc. PROJECTS = Project.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
December 2016
Categories |