TNetSharingManager访问冲突问题

我想在Delphi 2010中使用TNetSharingManager来编译这个项目 。 我已经导入types库,并试图编译它,但不幸的是,我在这个函数中得到一个访问冲突:

函数TNetSharingManager.GetDefaultInterface:INetSharingManager;
开始
  如果FIntf =零则
    连接;
  断言(FIntf nil,'DefaultInterface为NULL。组件未连接到服务器,在此操作之前必须调用“Connect”或“ConnectTo”)。
  结果:= FIntf;
结束;

(NETCONLib_TLB的一部分)错误在于: if FIntf = nil then出于某种奇怪的原因。

这是调用它的代码:

过程TForm1.GetConnectionList(string,IdList:TStrings);
 VAR
   pEnum:IEnumVariant;
   vNetCon:OleVARIANT;
   dwRetrieved:Cardinal;
   pUser:NETCONLib_TLB.PUserType1;
   NetCon:INetConnection;
开始
   Strings.Clear;
   IdList.Clear;
   pEnum:=(NetSharingManager.EnumEveryConnection._NewEnum作为IEnumVariant);
   while(pEnum.Next(1,vNetCon,dwRetrieved)= S_OK)做
  开始
      (IUnknown(vNetCon)作为INetConnection).GetProperties(pUser);
      NetCon:=(IUnknown(vNetCon)作为INetConnection);

     如果(pUser.Status在[NCS_CONNECTED,NCS_CONNECTING])//删除,如果你想禁用网卡也
     和([NCM_LAN,NCM_SHAREDACCESSHOST_LAN,NCM_ISDN]中的pUser.MediaType)
     和(GetMacAddress(GuidToString(pUser.guidId))'')
     开始
        //我们只需要启用有效的网卡
        Strings.Add(pUser.pszwName);
        IdList.Add(GuidToString(pUser.guidId));
     结束;
  结束;
结束;

我不明白为什么我不能与比较。 有任何想法吗?

当触发错误时,TNetSharingManager对象本身可能实际上已经死亡(或者不是首先创建的)。 FIntF = nil表达式是对类的实际字段的第一个引用,即它将指向无效的地址空间。

[编辑]我下载源代码并按照步骤导入了TLB(Delphi 2010)。 为了执行应用程序,我必须(a)以管理员身份运行Delphi,因为默认情况下我不是高级用户,(b)必须为pUser <> nil添加一个检查,因为最终的getProperties返回一个nil结构,但除此之外,代码运行良好。 所以不幸的是,我似乎无法重现您的问题。

重新读你的问题,你编译时得到一个AV?