Delphi Package Build / Установить отладку - PullRequest
4 голосов
/ 20 марта 2009

Я использую Delphi 2007 Pro. У меня есть пакет времени выполнения, который включает в себя несколько составных компонентов, которые я разрабатываю, которые основаны на TFrames. Существует также соответствующий пакет дизайна, который устанавливает эти компоненты в палитру инструментов. Эти потомки TFrame по ряду причин используют ряд сторонних компонентов, а также наследуют друг от друга как иерархию классов. Пока (и с помощью некоторых замечательных советов) этот подход очень хорошо работает для того, чего я хочу достичь.

Недавно я столкнулся с проблемой, скомпилировав / собрав пакет времени выполнения. Первоначально это было связано с некоторым конфликтом, связанным с файлом nxEventLog.pas, подробности которого, к сожалению, я не смог записать, но в основном это было что-то вроде «определение этого метода не соответствует предыдущему определению для него». как то, что вы получаете, когда ваша декларация реализации не соответствует вашей декларации класса Этот файл является файлом NexusDB (приложение использует встроенный сервер NexusDB).

Я пробовал разные вещи, но никогда не удавалось прекратить конфликт. Самое близкое, что я получил, было после компиляции, когда запрос IDE добавил TRUCKLOAD совершенно не связанных между собой модулей к предложению содержит / использует. Подробнее об этом позже, но если я продолжу, это все равно не сработает. Файл nxEventLog не изменился из своего первоначального состояния.

Невозможно выяснить, почему эта ошибка появлялась - она ​​обнаруживалась в файлах Nexus, а не в моем реальном пакете или модулях, и я ничего не изменил в коде Nexus - я наконец-то пошел дальше и просто полностью удалил Nexus и вручную выполнил поиск, чтобы убедиться, что я удалил все связанные файлы dcu и bpl, а затем переустановил его. (Я использую Nexus 2.07)

После запуска IDE я получил следующие ошибки:

bds.exe - точка входа не найдена
---------------------------
Точка входа в процедуру
@ Nxsddatadictionary @ TnxBaseTableDescriptor @ LoadFromReader $ qqrp15Classes @ TReader не может быть расположен в библиотеке динамических ссылок NexusDB207sd110.bpl.
---------------------------
OK

Далее:

Не удается загрузить пакет .... NexusDB207dv110.bpl
Не удается загрузить пакет .... cmTPPanels_D2007_DesignReg.bpl
Указанная процедура не может быть найдена.
Вы хотите попытаться загрузить этот пакет при следующей загрузке?

Как только я удалил пакеты среды выполнения / дизайна cmTPPanels (мой набор компонентов) через Компонент -> Установить пакет -> Удалить, другие мои "нормальные приложения Nexus DB", кажется, работают нормально, включая те, которые включают в себя oxmponent Nexus nxEventLog. Кажется, это указывает на то, что проблема определенно в моих установочных пакетах.

Итак, подтвердив, что моя установка Nexus, похоже, не является реальной проблемой, я открыл группу проектов, которая содержит оба пакета. При сборке (или компиляции) пакета среды выполнения Delphi IDE предоставляет мне то же диалоговое окно, которое я упоминал выше:

«Чтобы сделать этот пакет совместимым с другим установленным пакетом, необходимы следующие изменения. Нажмите« ОК », чтобы применить эти изменения и перестроить пакет».

Добавить dsnap.
dsnap содержит неявные единицы измерения DBClient, Provider, DataBkr, MidConst, Midas, DSIntf.

Добавьте ibxpress.
ibxpress содержит неявные единицы измерения IBUtils, IB, IBSQLMonitor, IBHeader, IBIntf, IBXConst, IBXMLHeader, IBSQL, IBBlob, IBCustomDataSet, IBDatabase, IBErrorCodes, IBDatabaseInfo,
IBExternals * IBInstallHeader, IB37stallHeader,
Добавить IndyCore.
IndyCore содержит неявные модули
Добавить IndySystem.
IndySystem содержит неявный блок (ы) IdBaseComponent, IdGlobal, IdStreamVCL, IdSysNativeVCL, IdSysVCL, IdSysBase, IdSysWin32, IdResourceStrings, IdException, IdSys, IdStream, IdObjs, IdComponent, IdStack, IdStackWindows, IdWship6, IdWinSock2, IdStackConsts, IdStackBSDBase, IdAntiFreezeBase.

Добавьте Rz30DBCtls90.
Rz30DBCtls90 содержит неявные единицы измерения RzDBNav, RzDBLbl, RzDBStat.

Добавьте lmdweb30_d10.
lmdweb30_d10 содержит неявный блок (ы) LMDWebHTTPGet, LMDHTMLObjectUnit, LMDFSSupport, LMDHTTPSupp, LMDStringsSupport, LMDURLSupp, LMDRASSupport, LMDRASCF, LMDWebConst, LMDRAS, LMDSyncUnit, LMDWebBase, LMDWebLex, LMDWebHTMLLex, LMDWebDownloadFormUnit, LMDDownload, LMDInetConst, LMDWebConfig, LMDWebInfo. * * 1 049
Добавьте lmddsg30_d10.
lmddsg30_d10 содержит неявные единицы (ы) LMDDsgPropInsp, LMDDsgPropEditors, LMDDsgMenuEditor, LMDDsgObjects, LMDDsgClass, LMDDsgCst, LMDDsgCollectionEditor, LMDDssgDDGSDGDGDGSDGDGDGSDGSDGSDGSDGSDGSD
Добавьте lmdstorage10_d10.
lmdstorage10_d10 содержит неявные единицы измерения LMDStorFormProperties, LMDStorFormHook, LMDStorBase, LMDStorConsts, LMDStorPropertiesStorage, LMDStorCommon, LMDStorINIVault.

Добавить ExceptionExpert11.
ExceptionExpert11 содержит неявные единицы (ы) ExceptionLog, EDisAsm, EHash, EListView, EConsts, ETypes, ELogManager, EEncrypt, EBase64, EXMLBuilder, ECore, EWebTools, EZip, EZlib, ESockets, ELang, EHooke * EDebug, EDeb.
Добавить RemObjects_Core_D11.
RemObjects_Core_D11 содержит неявное блока (ов) uROClasses, uROSerializer, uROXMLIntf, uROMSXMLImpl, uRORes, uROMSXML2_TLB, uROClient, uRODLToXML, uRODL, uROTypes, uROHTTPTools, uROClientIntf, uROEncryption, uROZlib, uROCipher1, uROHash, uRODECUtil, uRODECConst, uROCipher, uROCiphers, uROBinaryHelpers, uROCompression , uROEventRepository, uROServerIntf, uROSessions, uRODynamicRequest, uRORemoteService, uROThreadPool, uROServer, uROAsync, uROThread, uROBinMessage, uROStreamSerializer.

Добавить RemObjects_Indy_D11.
RemObjects_Indy_D11 содержит неявные единицы измерения uROSuperTCPChannel, uROSCHelpers.

Добавить DataAbstract_Core_D11.
DataAbstract_Core_D11 содержит неявный блок (ы) uDADataTable, uDASupportClasses, uDARes, uDABusinessProcessor, uDAEngine, uDASQL92QueryBuilder, uDASQL92Interfaces, uDAWhere, uDAInterfaces, DataAbstract4_Intf, DataAbstract3_Intf, uDAHelpers, uDAClasses, uDAMemDataTable, uDAMemDataset, uDAExpressionEvaluator, uDAMacros, uDAUtils, uDAXMLUtils, uDADriverManager, uDAInterfacesEx, uDADelta , uDARegExpr, uDAScriptingProvider, uDAOracleInterfaces, uDAMacroProcessors, uDADataStreamer, uDACDSDataTable, uDARemoteDataAdapter, uDAReconcileDialog, uDAReconcileDialogDetails, uDareTare, uDAR, UDAR, UDAR
Добавить VirtualTreesD11.
VirtualTreesD11 содержит неявные единицы (и) VirtualTrees, VTAccessibilityFactory.

Добавить VirtualShellToolsD11.
VirtualShellToolsD11 содержит неявные единицы (ы) VirtualExplorerTree, ColumnForm, VirtualResources, VirtualShellAutoComplete, VirtualShellNotifier, VirtualScrollbars.

Добавьте dxBarDBNavD11.
dxBarDBNavD11 содержит неявные единицы измерения. dxBarDBNav, dxBarDBNavStrs.

Добавить dxBarExtDBItemsD11.
dxBarExtDBItemsD11 содержит неявные единицы измерения. dxBarExtDBItems.

Добавьте cxVerticalGridD11.
cxVerticalGridD11 содержит неявные единицы измерения cxDBVGrid, cxVGridViewInfo, cxVGridUtils, cxVGrid, cxVGridNewCategory, cxVGridConsts.

Добавить dxNavBarD11.
dxNavBarD11 содержит неявный блок (ы) dxNavBar, dxNavBarExplorerViews, dxNavBarConsts, dxNavBarGraphics, dxNavBarStyles, dxNavBarBase, dxNavBarViewsFact, dxNavBarCollns, dxNavBarVSToolBoxViews, dxNavBarBaseViews, dxNavBarOffice11Views, dxNavBarOfficeViews, dxNavBarXPViews. * * тысяче восемьдесят-пять
Добавьте dxLayoutControlD11.
dxLayoutControlD11 содержит неявные единицы измерения dxLayoutControl, dxLayoutCustomizeForm, dxLayoutEditForm, dxLayoutCommon, dxLayoutLookAndFeels, dxLayoutControlAdapters.

Добавьте dxMasterViewD11.
dxMasterViewD11 содержит неявные единицы измерения. dxMasterViewColumns, dxMasterView, dxMasterViewStrs.

Добавить dxdbtrD11.
dxdbtrD11 содержит неявные единицы измерения dxdbtrel, dxlocate, dxtree, dxdbtree.

Добавить dxPSCoreD11.
dxPSCoreD11 содержит неявный блок (ы) dxPSEdgePatterns, dxPSUtl, dxPSImgs, dxPSRes, dxPrnDev, dxPSGlbl, dxPSEngn, dxPSSngltn, dxPSESys, dxBase, dxPSCore, dxPSPrVwStd, dxPSPopupMan, dxPgsDlg, dxWrap, dxPSHFToolBarBld, dxPSfmAutoHFTextFmt, dxPSEvnt, dxPrnPg, dxPpAttr, dxBkGnd, dxFEFDlg , dxPcPrVw, dxExtCtrls, dxExtCtrlsStrs, dxPSForm, dxPSAutoHFTextMnuBld, dxfmDfnStl, dxfmMnPg, dxfmClr, dxPreVw, dxPSPrVw, dxfmZoom, dxPSExtDlgs, dxfmPNFmt, dxfmDTFmt, dxPSPrVwOpt, dxPSfmCompositionDsg, dxPSfmCompositionAdd, dxPSCompsProvider, dxPSXplorerTreeView, dxPSfmReportProperties, dxPSPgsMnuBld, dxfmChFN, dxPSfmTtl, dxPSCPDsg, dxPSfmLnkAdd , dxPSfmEditDesc, dxPSFillPatterns, dxPrnDlg.

Добавьте dxPScxCommonD11.
dxPScxCommonD11 содержит неявные единицы измерения dxPScxCommon.

Добавить dxPScxGridLnkD11.
dxPScxGridLnkD11 содержит неявные единицы измерения dxPScxGridLnk.

Добавьте NexusDB207se110.
NexusDB207se110 содержит неявное блока (ов) nxseAutoComponent, nxseAllEngines, nxseRecordCompressionEngineSmart, nxseRecordEngineVariable, nxseFulltextEngineCursor, nxseFulltextEngineTable, nxseRefIntEngine, nxseJournalEngine, nxseSortEngineMerge, nxseTemporaryStorageChunked, nxseRecordEngineStatic, nxseIndicesEngineSimple, nxseIndexBase, nxseHeapEngineCached, nxseBlockHeapEngineNonfragmenting, nxseBlobEngineSimple, nxseIndexEngineStaticKeyBstarTree, nxseHeaderAccess, nxseEncryptionEngineBlowfishRC4, nxseBlobEngineSegmented, nxseAutoIncEngineSimple, nxseStreamEngineSimple .

Добавьте NexusDB207sr110.
NexusDB207sr110 содержит неявный блок (ы) nxsrSqlEngineBase, nxExeConst, nxsrServerEngine, nxsrBlobHandlerCaching, nxsrTimeoutHandling, nxsrTypes, nxsrBlobHandlerBase, nxsrBufferManager, nxsrFileImplWin32, nxsrStrings, nxsrEncryptionEngineBase, nxsrConst, nxsrTemporaryStorageBase, nxsrBlobEngineBase, nxsrSubEngineBase, nxsrBlobHandlerPassthrough, nxsrRecordMapperEngine, nxsrFieldMapperEngineAutoInc, nxsrFieldMapperEngine, nxsrFieldMapper, nxsrSortEngineBase, nxsrFulltextEngineBase , nxsrIndexEngineBase, nxsrRecordEngineBase, nxsrRefIntEngineBase, nxsrAutoIncEngineBase, nxsrStreamEngineBase, nxsrTableLockContainer, nxsrDataDictionary, nxsrFileHandling, nxsrServerCursorMapping, nxsrSystemStorage, nxsrRecordCompressionEngineBase, nxsrHeapEngineBase, nxsrBlockHeapEngineBase.

Добавить NexusDB207sq110.
NexusDB207sq110 содержит неявный блок (ы) nxsqlEngine, nxsqlFunctions, nxsqlDataDef, nxsqlFunctionOrganizer, nxsqlCondExp, nxsqlTableExp, nxsqlViews, nxsqlProxies, nxSQLParse, nxsqlPSM, nxsqlTest, CocoaBaseW, nxsqlBase, nxsqlDataManip, nxSQLTok, nxSQLProxiesIntf.

Добавьте NexusDB207lg110.
NexusDB207lg110 содержит неявные единицы измерения nxlgEventLogDispatcher, nxlgEventLog.

Добавьте NexusDB207dv110.
NexusDB207dv110 содержит неявные единицы измерения: nxServerManager, nxBaseServerComp, nxConfigSettings.

Добавьте MPCommonLibD11.
MPCommonLibD11 содержит неявные единицы измерения MPDataObject, MPCommonObjects, MPCommonUtilities, MPResources, MPShellTypes, MPThreadManager, MPShellUtilities.

Что странного в этом, кроме того, что включает в себя практически все, кроме кухонной раковины, так это то, что ряд упомянутых пакетов даже не имеет отношения к компонентам, включенным в этот пакет, который я пытаюсь установить; DataSnap, Indy, IBExpress, RemObjects Data Abstract и т. Д. - ни один из них даже не упоминается в моих компонентах.

Если я нажму «ОК» для всех этих добавленных модулей / пакетов, произойдет еще больше хаоса, и он не скомпилируется.

Папки NexusDB и папки, в которых находятся эти компоненты, которые я разрабатываю, находятся в моем пути к библиотеке, а мои пользовательские компоненты перечислены последними.

Я работаю на виртуальной машине и могу делать снимки по мере необходимости, но я не могу обойти эту проблему, несмотря на это, и ясно, что мне не хватает глубокого понимания того, как работает компилятор знать, где искать диагноз проблемы. Все, что кто-либо может упомянуть, что может помочь мне сделать это, будет высоко ценится.

Ответы [ 2 ]

8 голосов
/ 20 марта 2009

Как правило, эти ошибки происходят из-за несовместимости или, чаще, нескольких версий одних и тех же файлов BPL и / или DCP на пути. Выполните полный поиск в вашей системе всех BPL и DCP и убедитесь, что имеется только одна копия каждого.

Отслеживание этих типов ошибок может быть огромной болью в заднице. : - /

2 голосов
/ 31 июля 2009

Если у вас есть несколько связанных пакетов, порядок сборки и установки очень важен. Если пакет A зависит от B, а какая-то единица в B изменяется, иногда это действительно идет не так. Вы можете переустановить Delphi, но лучше переустановить пакеты по порядку.

Сначала удалите все пакеты. (С инсталляционными пакетами удалите все, что можете.)

Тогда проверьте реестр. Иногда остается некоторая информация, которая впоследствии может вызвать проблемы.

In the HKCU\Software\ [Borland|Codegear]\[Version]\Disabled Packages, there is a list of packages that are disabled. Have a look at these. And remove anything you need.
In the HKCU\Software\ [Borland|Codegear]\[Version]\Known Packages, there is a list of all known packages. Have a look at these and remove all suspicious packages.

Для более старых версий эту информацию можно найти в: В HKLM \ Software \ Borland [Версия] \ Известные пакеты

Попробуйте перезапустить Delphi для исправности, восстановить и установить все необходимое в правильном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...