2013-03-19 8 views
1

나는 관련 게시물을 가지고 있습니다 - Assertion failure in DBAccess.pas하지만이 질문은 따로 따로 물어볼 가치가 있다고 생각했습니다.OraNet.dcu에 해당 .pas 파일이없는 이유는 무엇입니까?

우리는 DevArt ODAC의 전체 소스 코드 릴리스에 대한 사용권을 얻었지만 업그레이드를 수행하는 데 엄청난 어려움을 겪고 있습니다. 이를 조사하는 과정에서 나는 OraNet.dcu에 대한 .pas 파일이 없다는 것을 알아 냈습니다.

이렇게하면 코드를 완전히 디버깅 할 수 없기 때문에 어려움의 원인을 파악하기가 어렵습니다.

또한이 장치는 무엇입니까? 코드의 이름과 지시문에서 .NET이 필요한 유닛이라고 가정하는 것이 합리적입니다 - 우리가 관심이있는 것이 아닙니다.

+0

@devart - 패키지 설치시 델파이가 닫히지 않음을 알았습니다. ? –

답변

3

OraNet.dcu 모듈에 직접 DB 연결 모드가 구현되어 있고 우리는이 모듈의 소스 코드를 배포하지 않습니다.이 제한은 website (페이지 하단의 참조)에 지정되어 있습니다. 다이렉트 모드를 사용하지 않고 Oracle 클라이언트 (OCI 모드)를 통해 작업하는 경우 프로젝트 설정에 DEFINE NONET을 지정할 수 있습니다.이 경우 직접 모드는 사용할 수 없으며이 모듈은 사용할 수 없습니다. 익숙한.

+0

필자는 Oracle Instant Client dll을 사용하는 것이 더 많은 디스크 공간을 사용하더라도이 oci8 기반 dcu를 사용하는 것보다 훨씬 더 나은 옵션이라고 설명합니다. OIC는 오라클과 Odac의 큰 잠재력을 발휘하는 엄청난 성과를 거두었습니다. –

+0

제 경우에는 업그레이드 할 큰 재산이 있습니다. 추가 테스트 비용으로 인해 루트 및 지점 변경이 금지됩니다. –

0

클라이언트 사용 (Oracle Instant Client 포함)은 직접 모드보다 실제로 많은 기능을 사용할 수 있지만 경우에 따라 직접 모드가 성능을 능가합니다. 게다가 Direct 모드는 추가 라이브러리를 제공하고 배포 할 필요가없고 추가 레지스트리 매개 변수와 환경 변수를 설정할 필요가 없으므로 응용 프로그램 배포를 상당히 단순화하고 디스크의 응용 프로그램 크기를 줄입니다. 직접 모드는 또한 iOS와 같은 원시 Oracle 클라이언트가없는 시스템에 응용 프로그램을 전개 할 수있게합니다. DB (Direct 또는 OCI)로 작업하는 방식을 선택하는 것은 특정 응용 프로그램별로 해결되는 개발자 및 작업에 따라 다릅니다. 위에서 언급했듯이 다이렉트 모드를 사용하지 않으면 DEFINE NONET을 설정하여 추가 모듈 플러깅을 비활성화 할 수 있습니다

+0

'$ (DEFINE NONET)'이 우리에게 해답 인 것처럼 보입니다. 기존 소프트웨어는 OCI이며 이해하기 때문에 아직 공유 할 수있는 작은 응용 프로그램에서 문제를 재현 할 수는 없습니다. 필자는 가능한 한 직접 실행하는 것에 관심이 있습니다. 직접 Oracle Access를 구현할 수 있다면 매우 유용 할 것입니다. –

+0

죄송하지만 내 마지막 코멘트는 잘못된 정보였습니다. 'NONET'은 소프트웨어가 작동하는 방식에 아무런 차이가 없습니다. –

+0

응용 프로그램이 OraNet.dcu 모듈을 사용하지 않도록하려면 프로젝트 설정의 조건부 정의 매개 변수에 NONET을 추가해야합니다.이 경우 OraNet 모듈은 컴파일시 프로젝트에 포함되지 않습니다. 이 모듈). 다른 동작을 검색하려면 자세한 내용을 설명하십시오. P. 연결 유형의 선택은 OraSession.Options.Direct 옵션 (True -Direct, False - OCI (기본값))에 의해 제어됩니다. – Devart

관련 문제