Вопрос

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

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

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

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

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

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

За которым следует:

Не удается загрузить пакет ....NexusDB207dv110. _BOS_
Не удается загрузить пакет ....cmTPPanels_D2007_DesignReg. _BOS_
Указанная процедура не была найдена.
Хотите ли вы попытаться загрузить этот пакет при следующей загрузке пакета?

Как только я удалил пакеты cmTPPanels runtime / design (мой набор компонентов) через Component -> Install Package -> Remove, мои другие приложения "normal Nexus DB", похоже, работают нормально, включая те, которые включают ocmponent nxEventLog от Nexus.Это, по-видимому, указывает на то, что проблема определенно где-то в моих установочных пакетах.

Итак, убедившись, что моя установка 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, IBServices.

Добавьте IndyCore.
IndyCore содержит неявные единицы IdIOHandlerSocket, IdSocks, IdIOHandlerStack, IdBuffer, IdResourceStringsCore, IdIntercept, IdCustomTransparentProxy, IdExceptionCore, IdSocketHandle, IdIOHandler, IdTCPConnection, IdReplyRFC, IdReply, IdTCPClient, IdIPAddress, IdAssignedNumbers.

Добавьте 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.

Добавьте lmddsg30_d10.
lmddsg30_d10 содержит неявные единицы LMDDsgPropInsp, LMDDsgPropEditors, LMDDsgMenuEditor, LMDDsgObjects, LMDDsgClass, LMDDsgCst, LMDDsgCollectionEditor, LMDDsgStrsEditor, LMDDsgPropPage, LMDDsgModule.

Добавьте 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, EHook, EDebug, ELeaks.

Добавьте 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 содержит неявные единицы измерения Udadatable, 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, UDACDSDATABLE, uDARemoteDataAdapter, uDAReconcileDialog, uDAReconcileDialogDetails, uDARemoteDataAdapterRequests, uDABinAdapter.

Добавьте VirtualTreesD11.
VirtualTreesD11 содержит неявные единицы VirtualTrees, VTAccessibilityFactory.

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

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

Добавьте dxbareextdbitemsd11.
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, DXEXTTRLS, 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, nxsrSortEngineBase, nxsrFulltextEngineBase, nxsrIndexEngineBase, nxsrRecordEngineBase, nxsrRefIntEngineBase, nxsrAutoIncEngineBase, nxsrStreamEngineBase, nxsrTableLockContainer, nxsrDataDictionary, nxsrFileHandling, nxsrServerCursorMapping, nxsrSystemStorage, База данных nxsrrecordcompression, база данных nxsrheapengine, база данных nxsrblockheapengine.

Добавьте 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.

Добавьте Mpcommon libd11.
Mpcommon libd11 содержит неявные единицы MPDataObject, mpcommon Objects, MPCOMMON Utilities, MPResources, MPShellTypes, MPThreadManager, MPShellUtilities.

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

Если у вас есть несколько связанных пакетов, порядок сборки и установки чрезвычайно важен.Если пакет 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 для вменяемости и перестроить и установить все необходимое в правильном порядке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top