ODAC v5에서 v8.2.8로 소프트웨어 제품군을 업그레이드하는 데 관심이 있습니다.DBAccess.pas에서 어설 션 오류가 발생했습니다.
특히 한 응용 프로그램이 문제를 일으키는 중입니다. 이 응용 프로그램은 dll로 구현 된 보조 응용 프로그램 집합 중 하나를로드합니다. 그것 자체 데이터베이스에 연결되어, 나는 매우 행복하게 다양한 ODAC 단위를 단계별로 수 -
LibHandle := LoadLibrary(PChar(dllname));
if LibHandle <> 0 then
begin
@showForm := GetProcAddress(LibHandle,'ShowMainDllForm');
if (@showForm <> nil) then
begin
try
ShowForm(Application.Handle, @FGlobalVars, 1);
런처가 괜찮습니다.
그러나 dll은 즉시 커서를 열려고 시도하는 것을 제외합니다. 오류는 MemDs.pas
에서 호출 된 DBAccess.pas
장치의 어설 션 오류입니다. 나는 이걸 밟았으며 주장의 실패가 옳았다는 것을 보여 주었다. Assert(FieldDesc is TCRFieldDesc)
은 을 MemDS.CreateFieldDefs()
에서받습니다.
나는 혼란 스럽습니다. 어떻게 하나의 호출 방법이 잘 작동하는 (런처 앱) 다른 하나 (DLL)가 항상 실패 할 수 있습니까? 사람이 내가 어떤 정보를 감사하겠습니다이 분야에서 어려움을 경험 한 경우
그러나 얇은 그것은 우리는 이미이 문제를 해결 한
귀하가 제공 한 코드는 라이브러리와 호출의 로딩을 보여줍니다 그 중 오류의 원인이되는 코드의 구현은 아닙니다. 라이브러리에 사용 된 DB 객체를 생성하기위한 주요 응용 프로그램, 라이브러리 및 스크립트의 전체 코드를 제공하십시오. 우리는 문제를 재현하고 수정하려고 노력할 것입니다. – Devart
그 이유는 복제해야 할 구성 요소 종속성이 많이 있기 때문입니다. 내 다른 질문에 대한 귀하의 대답은 유익합니다 ... 나는 다시 연락 할 것입니다. –
@devart - 나는 어설 션 라인을 없애면 문제가 해결된다는 것을 입증했습니다. 나는 TypeInfo가'AssignConnect' 메소드에서 없어지고있는 것 같아요. 당신은 논평 할 수 있습니까? 귀하의 코드를 잘못 이해하면 우리에게 이상적이지 않습니다. 관련성이 있다고 생각되는 버전 5에서 변경된 사항이 있습니까? –