What is the update on the fix for the following that was sent to me?
I have continued my investigation, and have found that the following causes
the problem:
1. In the host application a variable is declared.
2. In the DLL this variable is deleted.
3. In the DLL a new variable is declared => EListError.
It turns out that this problem occurs in the TCollection implementation,
inside Classes.pas. Variables are collection items, and you can reproduce
the problem by creating a TCollection instance in the host application,
creating an item on it, freeing the item in the DLL, and adding a new one.
The EListError will occur in this situation as well.
I have no idea what is going on here, and I can't find any reference to it
in any of the Delphi resources.
For the time being you can perhaps use the ExternalLDA property to share
sessions between a host application and DLL's. This should work just fine
(no memory management issues), and has an extra advantages that you don't
need ShareMem / borlndmm.dll, and that the DLL can be compiled with a
different version of Direct Oracle Access than the host application.
The downside of the ExternalLDA property is that you must set
TOracleSession.Preferences.UseOCI7 to True. As a result, you cannot use any
Net8 specific objects (CLOB's, BLOB's, Objects). We hope to address this in
the next patch release.
Greetings,
Marco Kalter (support@allroundautomations.nl)
Allround Automations (
http://www.allroundautomations.nl)