5 Stimmen

Delphi-Paket erstellen / installieren Debuggen

Ich verwende Delphi 2007 Pro. Ich habe ein Laufzeitpaket, das eine Reihe von zusammengesetzten Komponenten enthält, die ich entwickle und die auf TFrames basieren. Außerdem gibt es ein zugehöriges Designpaket, das diese Komponenten in der Werkzeugpalette installiert. Diese TFrame-Abkömmlinge verwenden aus verschiedenen Gründen eine Reihe von Komponenten von Drittanbietern und erben auch voneinander, als eine Klassenhierarchie. Bis jetzt (und mit Hilfe einiger großartiger Ratschläge hier), funktioniert dieser Ansatz sehr gut für das, was ich erreichen will.

Kürzlich bin ich jedoch beim Kompilieren/Bauen des Laufzeitpakets auf ein Problem gestoßen. Zunächst hatte es mit einem Konflikt zu tun, der sich um die Datei nxEventLog.pas drehte. Die Details habe ich leider nicht aufgezeichnet, aber im Grunde genommen war es etwas in der Art von "die Definition für diese Methode stimmt nicht mit der vorherigen Definition überein", so wie man es bekommt, wenn die Implementierungsdeklaration nicht mit der Klassendeklaration übereinstimmt. Diese Datei ist eine NexusDB-Datei (die Anwendung verwendet einen eingebetteten NexusDB-Server).

Ich habe verschiedene Dinge ausprobiert, aber es ist mir nie gelungen, den Konflikt zu beseitigen. Am nächsten kam ich beim Kompilieren, als die IDE das Hinzufügen von TRUCKLOAD völlig unzusammenhängender Einheiten zur contains/uses-Klausel anforderte. Mehr dazu später, aber wenn ich damit fortfuhr, würde es immer noch nicht funktionieren. Die nxEventLog-Datei hatte sich gegenüber ihrem ursprünglichen Zustand nicht verändert.

Ich konnte nicht herausfinden, warum dieser Fehler auftauchte - er tauchte in den Nexus-Dateien auf, nicht in meinem eigentlichen Paket oder in den Einheiten, und ich hatte nichts am Nexus-Code geändert -, und schließlich habe ich Nexus komplett deinstalliert und manuell gesucht, um sicherzustellen, dass ich alle zugehörigen dcu- und bpl-Dateien gelöscht hatte, und es dann neu installiert. (Ich verwende Nexus 2.07)

Beim Starten der IDE erhielt ich die folgenden Fehler:

bds.exe - Einstiegspunkt nicht gefunden
---------------------------
Der Einstiegspunkt der Prozedur
@Nxsddatadictionary@TnxBaseTableDescriptor@LoadFromReader$qqrp15Classes@TReader konnte nicht in der dynamischen Link-Bibliothek NexusDB207sd110.bpl gefunden werden.
---------------------------
OK

Gefolgt von:

Das Paket ....NexusDB207dv110.bpl kann nicht geladen werden.
Das Paket ....cmTPPanels_D2007_DesignReg.bpl kann nicht geladen werden.
Die angegebene Prozedur konnte nicht gefunden werden.
Möchten Sie versuchen, dieses Paket zu laden, wenn das nächste Mal ein Paket geladen wird?

Nachdem ich die Laufzeit-/Designpakete von cmTPPanels (mein Komponentensatz) über Komponente -> Installationspaket -> Entfernen deinstalliert habe, scheinen meine anderen "normalen Nexus DB"-Anwendungen einwandfrei zu funktionieren, einschließlich derjenigen, die die Nexus-Komponente nxEventLog enthalten. Dies scheint darauf hinzuweisen, dass das Problem definitiv irgendwo in meinen Installationspaketen liegt.

Nachdem ich also festgestellt hatte, dass meine Nexus-Installation nicht das eigentliche Problem zu sein scheint, öffnete ich die Projektgruppe, die beide Pakete enthält. Beim Erstellen (oder Kompilieren) des Laufzeitpakets zeigt mir die Delphi IDE dasselbe Dialogfeld an, das ich oben erwähnt habe:

"Die folgenden Änderungen sind notwendig, um dieses Paket mit anderen installierten Paketen kompatibel zu machen. Wählen Sie OK, um diese Änderungen zu übernehmen und das Paket neu zu erstellen."

dsnap hinzufügen.
dsnap enthält implizite Einheit(en) DBClient, Provider, DataBkr, MidConst, Midas, DSIntf.

ibxpress hinzufügen.
ibxpress enthält implizite Einheit(en) IBUtils, IB, IBSQLMonitor, IBHeader, IBIntf, IBXConst, IBXMLHeader, IBSQL, IBBlob, IBCustomDataSet, IBDatabase, IBErrorCodes, IBDatabaseInfo,
IBExternals, IBInstallHeader, IBServices.

IndyCore hinzufügen.
IndyCore enthält die implizite(n) Einheit(en) IdIOHandlerSocket, IdSocks, IdIOHandlerStack, IdBuffer, IdResourceStringsCore, IdIntercept, IdCustomTransparentProxy, IdExceptionCore, IdSocketHandle, IdIOHandler, IdTCPConnection, IdReplyRFC, IdReply, IdTCPClient, IdIPAddress, IdAssignedNumbers.

IndySystem hinzufügen.
IndySystem enthält implizite Einheit(en) IdBaseComponent, IdGlobal, IdStreamVCL, IdSysNativeVCL, IdSysVCL, IdSysBase, IdSysWin32, IdResourceStrings, IdException, IdSys, IdStream, IdObjs, IdComponent, IdStack, IdStackWindows, IdWship6, IdWinSock2, IdStackConsts, IdStackBSDBase, IdAntiFreezeBase.

Rz30DBCtls90 hinzufügen.
Rz30DBCtls90 enthält implizite Einheit(en) RzDBNav, RzDBLbl, RzDBStat.

lmdweb30_d10 hinzufügen.
lmdweb30_d10 enthält implizite Einheit(en) LMDWebHTTPGet, LMDHTMLObjectUnit, LMDFSSupport, LMDHTTPSupp, LMDStringsSupport, LMDURLSupp, LMDRASSupport, LMDRASCF, LMDWebConst, LMDRAS, LMDSyncUnit, LMDWebBase, LMDWebLex, LMDWebHTMLLex, LMDWebDownloadFormUnit, LMDDownload, LMDInetConst, LMDWebConfig, LMDWebInfo.

lmddsg30_d10 hinzufügen.
lmddsg30_d10 enthält implizite Einheit(en) LMDDsgPropInsp, LMDDsgPropEditors, LMDDsgMenuEditor, LMDDsgObjects, LMDDsgClass, LMDDsgCst, LMDDsgCollectionEditor, LMDDsgStrsEditor, LMDDsgPropPage, LMDDsgModule.

Hinzufügen von lmdstorage10_d10.
lmdstorage10_d10 enthält implizite Einheit(en) LMDStorFormProperties, LMDStorFormHook, LMDStorBase, LMDStorConsts, LMDStorPropertiesStorage, LMDStorCommon, LMDStorINIVault.

ExceptionExpert11 hinzufügen.
ExceptionExpert11 enthält die implizite(n) Einheit(en) ExceptionLog, EDisAsm, EHash, EListView, EConsts, ETypes, ELogManager, EEncrypt, EBase64, EXMLBuilder, ECore, EWebTools, EZip, EZlib, ESockets, ELang, EHook, EDebug, ELeaks.

RemObjects_Core_D11 hinzufügen.
RemObjects_Core_D11 enthält implizite Einheit(en) 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 hinzufügen.
RemObjects_Indy_D11 enthält implizite Einheit(en) uROSuperTCPChannel, uROSCHelpers.

DataAbstract_Core_D11 hinzufügen.
DataAbstract_Core_D11 enthält implizite Einheit(en) 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, uDARemoteDataAdapterRequests, uDABinAdapter.

VirtualTreesD11 hinzufügen.
VirtualTreesD11 enthält implizite Einheit(en) VirtualTrees, VTAccessibilityFactory.

VirtualShellToolsD11 hinzufügen.
VirtualShellToolsD11 enthält implizite Einheit(en) VirtualExplorerTree, ColumnForm, VirtualResources, VirtualShellAutoComplete, VirtualShellNotifier, VirtualScrollbars.

Hinzufügen von dxBarDBNavD11.
dxBarDBNavD11 enthält die implizite(n) Einheit(en) dxBarDBNav, dxBarDBNavStrs.

Hinzufügen von dxBarExtDBItemsD11.
dxBarExtDBItemsD11 enthält implizite Einheit(en) dxBarExtDBItems.

Hinzufügen von cxVerticalGridD11.
cxVerticalGridD11 enthält implizite Einheit(en) cxDBVGrid, cxVGridViewInfo, cxVGridUtils, cxVGrid, cxVGridNewCategory, cxVGridConsts.

Hinzufügen von dxNavBarD11.
dxNavBarD11 enthält implizite Einheit(en) dxNavBar, dxNavBarExplorerViews, dxNavBarConsts, dxNavBarGraphics, dxNavBarStyles, dxNavBarBase, dxNavBarViewsFact, dxNavBarCollns, dxNavBarVSToolBoxViews, dxNavBarBaseViews, dxNavBarOffice11Views, dxNavBarOfficeViews, dxNavBarXPViews.

Hinzufügen von dxLayoutControlD11.
dxLayoutControlD11 enthält die implizite(n) Einheit(en) dxLayoutControl, dxLayoutCustomizeForm, dxLayoutEditForm, dxLayoutCommon, dxLayoutLookAndFeels, dxLayoutControlAdapters.

Hinzufügen von dxMasterViewD11.
dxMasterViewD11 enthält implizite Einheit(en) dxMasterViewColumns, dxMasterView, dxMasterViewStrs.

dxdbtrD11 hinzufügen.
dxdbtrD11 enthält implizite Einheit(en) dxdbtrel, dxlocate, dxtree, dxdbtree.

dxPSCoreD11 hinzufügen.
dxPSCoreD11 enthält implizite Einheit(en) 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.

Hinzufügen von dxPScxCommonD11.
dxPScxCommonD11 enthält implizite Einheit(en) dxPScxCommon.

Hinzufügen von dxPScxGridLnkD11.
dxPScxGridLnkD11 enthält implizite Einheit(en) dxPScxGridLnk.

NexusDB207se110 hinzufügen.
NexusDB207se110 enthält implizite Einheit(en) nxseAutoComponent, nxseAllEngines, nxseRecordCompressionEngineSmart, nxseRecordEngineVariable, nxseFulltextEngineCursor, nxseFulltextEngineTable, nxseRefIntEngine, nxseJournalEngine, nxseSortEngineMerge, nxseTemporaryStorageChunked, nxseRecordEngineStatic, nxseIndicesEngineSimple, nxseIndexBase, nxseHeapEngineCached, nxseBlockHeapEngineNonfragmenting, nxseBlobEngineSimple, nxseIndexEngineStaticKeyBstarTree, nxseHeaderAccess, nxseEncryptionEngineBlowfishRC4, nxseBlobEngineSegmented, nxseAutoIncEngineSimple, nxseStreamEngineSimple.

NexusDB207sr110 hinzufügen.
NexusDB207sr110 enthält implizite Einheit(en) 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 hinzufügen.
NexusDB207sq110 enthält implizite Einheit(en) nxsqlEngine, nxsqlFunctions, nxsqlDataDef, nxsqlFunctionOrganizer, nxsqlCondExp, nxsqlTableExp, nxsqlViews, nxsqlProxies, nxSQLParse, nxsqlPSM, nxsqlTest, CocoaBaseW, nxsqlBase, nxsqlDataManip, nxSQLTok, nxSQLProxiesIntf.

NexusDB207lg110 hinzufügen.
NexusDB207lg110 enthält implizite Einheit(en) nxlgEventLogDispatcher, nxlgEventLog.

NexusDB207dv110 hinzufügen.
NexusDB207dv110 enthält implizite Einheit(en) nxServerManager, nxBaseServerComp, nxConfigSettings.

MPCommonLibD11 hinzufügen.
MPCommonLibD11 enthält implizite Einheit(en) MPDataObject, MPCommonObjects, MPCommonUtilities, MPResources, MPShellTypes, MPThreadManager, MPShellUtilities.

Was daran seltsam ist, abgesehen von der Tatsache, dass es so ziemlich alles außer dem Spülbecken enthält, ist, dass eine Reihe der erwähnten Pakete nicht einmal für die Komponenten relevant sind, die in diesem Paket enthalten sind, das ich zu installieren versuche; DataSnap, Indy, IBExpress, RemObjects Data Abstract usw. - auf keines davon wird in meinen Komponenten überhaupt Bezug genommen.

Wenn ich bei all diesen hinzugefügten Einheiten/Paketen auf "OK" klicke, entsteht noch mehr Chaos, und es lässt sich nicht kompilieren.

Die NexusDB-Ordner und die Ordner, in denen sich die Komponenten befinden, die ich entwickle, befinden sich alle in meinem Bibliothekspfad, wobei meine benutzerdefinierten Komponenten zuletzt aufgeführt sind.

Ich arbeite auf einer virtuellen Maschine und kann bei Bedarf einen Snapshot erstellen, aber ich scheine dieses Problem trotzdem nicht umgehen zu können, und es ist klar, dass ich nicht genügend tiefgreifende Kenntnisse über die Funktionsweise des Compilers habe, um zu wissen, wo ich nach einer Diagnose des Problems suchen muss. Für jeden Hinweis, der mir dabei helfen könnte, wäre ich sehr dankbar.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X