Mám problém s FireDAC
DLL Sharing sample.
Ide o oficiálne Delphi demo pre klon FDConnection do DLL-ka.
Je na disku: "
Pascal\Database\FireDAC\Samples\Comp Layer\TFDConnection\DLL_Sharing"
Docwiki:
http://docwiki.embarcadero.com/CodeExamples/Rio/en/FireDAC.DLLSharing_SampleDemo je na báze
MS Access. Samozrejme funguje.
Ak však použijem databázu
SQLite, tak ten istý program pri zavretí hlavného okna skončí chybou:
"Project Project1.exe raised exception class EFException with message '[FireDAC][Phys]-334.
FDPhysManager shutdown timeout. Possible reason: application has not released all connection interfaces."
Zdá sa, že druhá Connection, tá "klonovaná" v DLL-ku pošahá nastavenia hlavnej Connection.
Klonovanie pre DLL sa deje cez parameter ACliHandle (Pointer).
V DLL musí byť samostatná FDConnection, ktorá prevezme pointer do SharedCliHandle.
Connection v DLL-ku sa však nedá "bezbolestne" odpojiť.
Platí pre SQLite.
Acces nemá problém.Potrebujem do databázy v hlavnom programe importovať externé data.
Pre bežnú databázu (na disku), by som mohol použiť samostatnú Connection, lenže nie pre InMemory databázu. Tam je nutný ten klon, popísaný vyššie.
PS
Mám Delphi Tokyo.
PS2
Nečakám zázraky, zdá sa, že SQLite databázu tu používa málokto. No ale za pokus nič nedám..