[ Miloš Baić @ 27.02.2008. 17:22 ] @
Pozdrav,

koristim ZeosLib, TZConnection i TZQuery, kreiram ih iz koda u okviru dll -a. Kreiram TZConnection, prosledim parametre za kačenje na bazu, potom kreiram TZQuery, zadam SQL upit (otvori dataset) i potom zatvorim dataset i odradim "FreeAndNil" metodu. Naravno, pošto mi konekcija nije potrebna odradim diskonektovanje i, takođe, pozovem metodu "FreeAndNil". To lepo radi, ali izgleda da postoje "repovi" u memoriji, odnosno iz memorije se ne isprazni sve što je zauzeto ovim procesom te dolazi do izuzetka.

Kad odradim kreiranje konekcije i dataset -a, al ga ne otvaram, ne koristim metodu "Open" i izuzetak se ne pojavljuje. Predpostavljam pošto je ta metoda povezana sa unitom "DB", a metoda "Open" ima DataSet.Active :=True da je tu ostalo nešto otvoreno, tj. ostalo je alocirano u memoriji!?

Na koji bih način mogao izvršiti dislociranje svega što je bilo u memoriji a vezano za dll?!
[ savkic @ 27.02.2008. 18:33 ] @
> diskonektovanje i, takođe, pozovem metodu "FreeAndNil". To lepo radi, ali izgleda da postoje "repovi" u memoriji, odnosno iz memorije se
> ne isprazni sve što je zauzeto ovim procesom te dolazi do izuzetka.

Kog?

> Na koji bih način mogao izvršiti dislociranje svega što je bilo u memoriji a vezano za dll?!

Pisanjem custom memory managera, ali ne verujem da tvoj problem ima veze sa neoslobađanjem memorije, pre da je u pitanju upotreba oslobođene memorije.
[ _deran_ @ 27.02.2008. 22:51 ] @
jesi li ubacio 'ShareMem' u 'uses' gde treba?
[ Miloš Baić @ 28.02.2008. 07:37 ] @
Poruka:
Citat:
The instruction at "0x01e83636" referenced memory at "0x0202961c". The memory could not be "read".

Što se tiče ShareMem, kad je ubacim u "uses", delphi pukne ceo, tj. moram "Task Manager" - "End Process"!?
[ _deran_ @ 28.02.2008. 08:05 ] @
jesi ga ubacio samo u .dpr na prvom mestu ili jos negde?
[ Miloš Baić @ 28.02.2008. 08:50 ] @
Kao što sam rekao, pišem dll (automation object), "ShareMem" prvo sam ubacio unit, potom i u dpr i nije više dolazilo do pucanja delphija. Dakle, ono što je unutar same activex kontrole(dll) radi ok, al kad izađem iz aplikacije koja je koristila procedure iz tog dll -a, dolazi do greške koju sam gore naveo.
[ savkic @ 28.02.2008. 10:40 ] @
> Kao što sam rekao, pišem dll (automation object), "ShareMem" prvo sam ubacio unit, potom i u dpr i nije više dolazilo do pucanja delphija.
> Dakle, ono što je unutar same activex kontrole(dll) radi ok, al kad izađem iz aplikacije koja je koristila procedure iz tog dll -a, dolazi do
> greške koju sam gore naveo.

Ta aplikacija iz koje izlaziš je Delphi prg ili ne? Koju grešku dobijaš? Koji threading model koristiš, pokušaj neki drugi. Kako razmenjuješ podatke između dlla i programa? Kreni da pojednostavljuješ aplikaciju (ako je ti pišeš, ako ne napravi test) i dll sve dok ne dođeš do trenutka kada radi.
[ _deran_ @ 28.02.2008. 11:57 ] @
http://delphi.about.com/od/objectpascalide/l/aa103003a.htm
[ Miloš Baić @ 28.02.2008. 13:44 ] @
Aplikacija iz koje izlazim nije delphi program, greška:
Citat:
The instruction at "0x01e83636" referenced memory at "0x0202961c". The memory could not be "read".

Threading model je "tmFree", a Instancing je "ciSingleInstance".
[ Miloš Baić @ 29.02.2008. 07:33 ] @
Pozdrav,

u ovom momentu, posle niz pokušaja da rešim problem odustao sam od ZeosLib. Na samom sajtu, forum, može se uočiti više tema sa nazivom i sadržajem "memory leak". Takođe, to se pojavljivalo i u verziji 6.2, koliko vidim, to je poslednje, stoga mi je ta varijanta nestablina.

Dakle, problem se manifestovao kroz activex kontrolu (dll), ali ne i u samoj delphi aplikaciji.

Hvala Savkiću i _deran_ -u na konsultacijama.