DA Delphi recompile DAD driver

Hi,

in the DASchemaModeler I need to automatically manage the fields name in PascalCase (I’m working with a db oracle) instead of having their names all capitalized

For this operation I have to modify and recompile the UniDAC dad driver. I tried to compile without modified but when I use it in DASchemaModeler raise some exception. Example when I open the list of fields of a table ecc ecc

I recompiled the DAD driver with last version of Delphi (10.3.3) and last version of UniDAC (8.1.2).

Are there any particular prerequisites for recompiling a DAD driver?

Thank you very much and best regards

Hi,

there shouldn’t be any issues with it.
one requirement - use unicode version of Delphi.

What exactly errors were shown?

Hi EvgenyK

yes I use last version of Delphi (RIO 10.3.3).

Thi is the connection string;

When I open a Table

This is the result
image

With original driver this is the result:
image

I only recompiled the original DAD driver without any modification

In debug after call the procedure Oracle_DoGetTableFields of the unit uDAOracleInterfaces raise an access violation

image

Hi,

I can reproduce issue with UniDAC 8.1.2 and Delphi 10.3.3.
Will investigate.
something could be changed in 10.3.3

for DAUniDACDrv.dad, we use UniDAC v6.4.16 (21-Nov-16) and XE8 compiler.

1 Like

Many thanks EvgenyK.

I don’t have Delphi XE8 installed but I have XE7, Berlin and Tokyo. While waiting for your feedback, I try one of these and let you know

Best Regards

Hi EvgenyK.

I tried with Delphi 10.2.3 whit last version of DA and UniDAC and work fine. So the problems are in Delphi Rio 10.3.x

Best Regards

1 Like

Thanks, logged as bugs://83608

1 Like

I see that the bug is still listed as “Needs Triage”, so I’ll share what I found when I ran into this same issue myself a while ago.

The DoGetTableFields method returns a TDAFieldCollection, which descends from TCollection, which uses TList<TCollectionItem> to store its items. The problem is that the implementation of TList<T> changed between 10.2 and 10.3. In 10.2 and earlier versions, TList<T> contains an “array of T” that holds its data. In 10.3 though, TList<T> accesses the array via a pointer contained in a TListHelper record.

The error occurs because the RemObjects.DataAbstract.Unmanaged.dll that the Schema Modeler uses to connect to Delphi-based drivers tries to access the array directly, which works fine in older versions, but fails in 10.3 because the array is not where the dll expects it to be.

On a related note, is there any chance that the source code for the dll could be made available? That would make it easier to diagnose these kinds of issues in the future.

Hi,

Thx. I’ve added your comment to #83608.

We will review this possibility.

Thanks, logged as bugs://83754

bugs://83608 got closed with status notfixable.

bugs://83754 got closed with status fixed.

1 Like