Cum de a distruge ole-obiect

Cum de a distruge OLE-obiect?

bun venit
Ole-doriți să creați un obiect și de a lucra cu ea
Pentru a face acest lucru, am scrie -
var MyInterface. IMyInterface;
începe
MyInterface: = CreateOleObject ( "OleServer.ServerName") AS IMyInterface;
MyInterface.CoolAction (maza, Faka);
se încheie;

Toate lucrările în cel mai bun mod posibil, dar:
rulare am dorit dintr-o dată de memorie OSVOD de la meu Ole-obiect,
Cum pot face ceva de genul MyInterface.Free?

MyInterface: = zero; // un indicator
În general vorbind, înainte de sfârșitul Delphi sine toate versiunile

2Serg,
dar nimic de genul: (((
un astfel de lucru numai în cazul în care plimbare
var MyInterface. varianta;

Și dacă am face acest lucru (adică utilizați cu întârziere de legare), este încă memoria după nefericiții mei OLE-obiecte nu este eliberat.

Cum să fii. Sunt într-un impas.

Credeti sau nu.
Ea nu ajută MyInterface: = zero. sută la sută nu ajută.
Am făcut deja acest lucru. și din nou am încercat.

Deci, scris greșit obiectul în sine, nu pot fi ușurate despre refcount = 0. Puteți încerca MyInterface._Release, dar acest lucru este chernukha - atunci când MyInterface: = zero Delphi această procedură în sine este, este atât de puțin probabil să ajute

Nu, încă ceva în acest cod este greșit. Dacă utilizați o interfață variabilă, apoi încercați pentru a crea un obiect direct prin CoCreateInstance, și eliberarea de zero. Și dacă utilizați CreateOleObject, apoi să ia un pointer la tipul Variant, eliberând pe Unassigned. Deci, se pare, ar trebui să funcționeze. Și, apropo, obiectul dvs. nu are nici o metodă, cum ar fi „Quit“?

Server - DLL sau EXE? Scris de dvs. sau de o terță parte? Dacă EXE, atunci fie este blocat în memorie (de exemplu, numit LockServer), sau are o eroare în mecanismul de numărare de referință. Dacă DLL, de CoFreeUnusedLibraries porobuj.

Memorie: 0.72 MB
Timpul: 0,034 c

articole similare