2009-03-20 6 views
3

Delphi 2007 Pro를 사용하고 있습니다. TFrames를 기반으로하는 여러 가지 복합 구성 요소가 포함 된 런타임 패키지가 있습니다. 또한 이러한 구성 요소를 도구 팔레트에 설치하는 관련 디자인 패키지가 있습니다. 이러한 TFrame 자손은 여러 가지 이유로 여러 가지 타사 구성 요소를 사용하며 클래스 계층 구조로 서로 상속합니다. 지금까지 (그리고 여기에 큰 조언을 해주었기 때문에),이 접근법은 내가 성취하고자하는 목적을 위해 아주 잘 작동하고 있습니다.Delphi 패키지 디버깅 빌드/설치

최근에는 런타임 패키지를 컴파일/빌드 할 때 문제가 발생했습니다. 처음에는 nxEventLog.pas를 중심으로 충돌이있었습니다. 불행히도 기록하지 못했지만 기본적으로 "이 방법에 대한 정의는 이전 정의와 일치하지 않습니다" 구현 선언이 클래스 선언과 일치하지 않을 때 얻을 수있는 것과 같습니다. 이 파일은 NexusDB 파일입니다 (응용 프로그램은 NexusDB 내장 서버를 사용합니다).

나는 여러 가지 일을 시도했지만 갈등을 없애지 못했습니다. 가장 가까운 IDE는 컴파일시 IDE 요청이 완전히 관련이없는 유닛의 TRUCKLOAD를 contains/uses 절에 추가하는 것입니다. 나중에이 문제에 대해 더 자세히 설명해 드리지만 계속 진행한다면 여전히 효과가 없을 것입니다. nxEventLog 파일이 원래 상태에서 변경되지 않았습니다.

이 오류가 표시되는 이유 - 실제로 패키지 나 단위가 아닌 Nexus 파일에 표시되어서 Nexus 코드에서 아무 것도 변경하지 못했습니다. 결국 마침내 완전히 제거되었습니다. 넥서스, 수동으로 검색하여 모든 관련 dcu 및 bpl 파일을 삭제했는지 확인한 다음 다시 설치했습니다. ----------- 진입 점
를 찾을 수 없음 -

bds.exe은 다음 IDE를 발사하면

(I 넥서스 2.07를 실행하는거야), 나는 다음과 같은 오류가있어 ----------------
프로 시저 엔트리 포인트
@ Nxsddatadictionary @ TnxBaseTableDescriptor @ LoadFromReader $ qqrp15Classes @ TReader는 동적 연결 라이브러리 NexusDB207sd110.bpl에서 찾을 수 없습니다.

는로드 할 수 없습니다 :
---------------------------
OK

얹는 패키지 .... NexusDB207dv110.bpl
패키지를로드 할 수 없습니다 .... cmTPPanels_D2007_DesignReg.bpl
지정한 절차를 찾을 수 없습니다.
다음 번에 패키지를로드 할 때이 패키지를로드하려고합니까?

일단 구성 요소 -> 패키지 설치 -> 제거를 통해 cmTPPanels 런타임/디자인 패키지를 제거하면 Nexus의 nxEventLog ocmponent를 포함하여 다른 "정상적인 Nexus DB"응용 프로그램이 정상적으로 작동하는 것 같습니다. . 이것은 어딘가에 설치 패키지에 문제가 있음을 나타냅니다.

Nexus 설치가 실제 문제가 아닌 것으로 확인되면 두 패키지가 모두 포함 된 프로젝트 그룹을 열었습니다. 런타임 패키지를 빌드 (또는 컴파일)하면 Delphi IDE에서 앞서 언급 한 동일한 대화 상자를 제공합니다.

"이 패키지를 다른 설치된 패키지와 호환되게하려면 다음과 같이 변경해야합니다.패키지를 이러한 변경 사항을 적용하고 다시 확인을 선택하십시오. "

을 dsnap 추가합니다.
dsnap 암시 장치 (들) DBClient는, 공급자, DataBkr, MidConst, 마이다스, DSIntf.

추가 ibxpress.
ibxpress을 포함 암시 부 (S) IBUtils, IB, IBSQLMonitor, IBHeader, IBIntf, IBXConst, IBXMLHeader, IBSQL, IBBlob, IBCustomDataSet, IBDatabase, IBErrorCodes, IBDatabaseInfo,
IBExternals, IBInstallHeader, IBServices를 포함한다.

IndyCore 추가.
가 IndyCore 포함 을 나는(), IdCommand(), IdCommand(), IdCommand(), IdCommand(), IdCommand(), IdCommand(), IdCommand(), IdCommand(), IdCommand(), IdCommand()입니다.

IndySystem을 추가하십시오.
IndySystem 암시 단위를 포함하는 (S) 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 암시 유닛은 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을 추가하십시오.
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 암시 단위를 포함하는 (S) 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 암시 단위를 포함하는 (S) 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 암시 단위를 포함하는 (S) 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 폴더와 개발중인 구성 요소가 모두 내 라이브러리 경로에 있으며 사용자 지정 구성 요소가 마지막에 나열됩니다.

가상 컴퓨터에서 작업하고 있고 필요에 따라 스냅 샷을 만들 수 있지만 관계없이이 문제를 해결할 수는 없지만 컴파일러의 상태를 충분히 이해하지 못했습니다. 문제의 진단을 어디에서 찾아야하는지 알기 위해 노력합니다. 누구에게도 도움이 될만한 언급이 있으면 감사하게 생각합니다.

+1

나는이 문제가 무엇인지 파악하지 못했습니다. 이전 소스 코드로 돌아가서 거기에서갔습니다. – Jamo

+0

이 프로젝트를 다시 방문하고 다시 한번 ""이 패키지를 다른 설치된 패키지와 호환되게하려면 다음 변경 사항이 필요합니다. 이러한 변경 사항을 적용하고 패키지를 다시 빌드하려면 확인을 선택하십시오. "(증상이있는 경우 (관련이없는 단위를 추가하려는 델파이 등) 여전히 이런 종류의 문제를 진단하는 더 좋은 방법이 있는지 알고 싶습니까? – Jamo

+0

참고 사항 : Delphi/C++ Builder에서 빨리 빠져 나올수록 Delphi 및 C++ Builder의 라이센스가 해당 소프트웨어로 제작 된 응용 프로그램을 미션 크리티컬 한 응용 프로그램에 사용할 수 없음을 알았습니까?/C++ Builder는 너무나 많이 짜증나지만, 다른 사람들에게 경고 할 필요가 있다고 생각합니다. Java, C# 등을 사용하십시오. – Liao

답변

7

일반적으로 이러한 오류는 경로에있는 동일한 BPL 및/또는 DCP 파일의 호환되지 않는 버전 또는 더 일반적으로 여러 버전의 파일에서 발생합니다. 모든 BPL 및 DCP에 대해 시스템을 전체적으로 검색하고 각각의 복사본이 하나만 있는지 확인하십시오.

이러한 유형의 오류를 추적하는 것은 엉덩이에 엄청난 고통을 줄 수 있습니다. :/

+0

그래, 행운을 빈다. 아니 재미. : ( –

+0

네. 그리고 만약 크게 요. 여러 델파이 버전이 있습니다. 이런, 나는 그것을 싫어한다. –

+0

저는 매혹적인 델파이 버전을 별도의 가상 머신에서 실행합니다. 제 삼자 구성 요소를 모두 여러 델파이 버전에서 모두 "동기화되고 행복하게"유지하는 것은 너무 많은 작업이었습니다. – Jamo

2

관련 패키지가 여러 개있는 경우 빌드 및 설치 순서가 매우 중요합니다. 패키지 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 \ 볼랜드 [버전]에서 \ 알려진 패키지

봅니다 정신 델파이를 다시 시작하고 올바른 필요 아무것도를 다시 설치하기 주문.

+2

이동, Codegear! Inprise? 볼랜드? 잉글랜드? 놀람? 보르 알라? Codebor? aaaaaaahhhhhhhhhhhhhhhhhhhhhhhhh – Liao

관련 문제