Глюки с ActiveX / ActiveDS

From
Denis Balashov (2:5010/103.12)
To
Gennady Porev
Date
2002-10-19T11:58:48Z
Area
SU.WINDOWS.NT.PROG
    Приветствую Вас, Gennady!

 [было это 18.10.2002] Gennady Porev написал к All:

GP> var Cont : IADsContainer;
GP>     ADs  : IADs;

GP> begin
GP>  CoInitialize(nil);
GP>  ADsGetObject('IIS://vinca/W3Svc/1',IADsContainer,Cont);
GP>  Cont.QueryInterface(IID_IADs,ADs);
GP>  Writeln(ADs.Get('LogFileDirectory'));
GP>  ADs._Release;
GP>  Cont._Release;
GP>  CoUninitialize;
GP> end.
GP> -----------------------------------

В твоем случае происходит повторное освобождение уже уничтоженного Release'ом экземпляра ADs и Cont, т.к. они имеют значение <>nil. Надо так:

 CoInitialize(nil);
 try
   ADsGetObject('IIS://vinca/W3Svc/1',IADsContainer,Cont);
   Cont.QueryInterface(IID_IADs,ADs);
   Writeln(ADs.Get('LogFileDirectory'));
 finally
   ADs:=nil;
   Cont:=nil;
   CoUninitialize;
 end;

RTFM, экземпляры объекта уничтожаются присвоением NIL и при количестве ссылок=0

                                                                   Denis.
--- [CDMA][win2000][Courier V.Evr]  [dba<собак>hotbox.ru][ICQ 99798225] ---
 * Origin: Сейчас я сделаю из него пудинг. (2:5010/103.12)