我正在尝试在使用TNetSharingManager的Delphi 2010中编译此project。我已经导入了类型库并尝试对其进行编译,但是不幸的是,我在此函数中遇到了访问冲突:函数TNetSharingManager.GetDefaultInterface:INetSharingManager;开始 如果FIntf = nil,则 连接; 断言(FIntf nil,'DefaultInterface为NULL。组件未连接到服务器。您必须在执行此操作之前调用“Connect”或“ConnectTo””); 结果:= FIntf;结尾;(NETCONLib_TLB的一部分)错误出现在:if FIntf = nil then中,原因很奇怪。调用它的代码:过程TForm1.GetConnectionList(Strings,IdList:TStrings);变种 pEnum:IEnumVariant; vNetCon:OleVARIANT; dw检索:红衣主教; pUser:NETCONLib_TLB.PUserType1; NetCon:INetConnection;开始 字符串清除 IdList.Clear; pEnum:=(NetSharingManager.EnumEveryConnection._NewEnum作为IEnumVariant); 而(pEnum.Next(1,vNetCon,dwRetrieved)= S_OK)做 开始 (IUnknown(vNetCon)为INetConnection).GetProperties(pUser); NetCon:=(IUnknown(vNetCon)为INetConnection); if([NCS_CONNECTED,NCS_CONNECTING]中的pUser.Status)//删除是否也要禁用NIC卡 和([NCM_LAN,NCM_SHAREDACCESSHOST_LAN,NCM_ISDN]中的pUser.MediaType) 和(GetMacAddress(GuidToString(pUser.guidId))'')然后 开始 //我们只希望启用有效的网卡 Strings.Add(pUser.pszwName); IdList.Add(GuidToString(pUser.guidId)); 结尾; 结尾;结尾;我不明白为什么我无法与 nil 进行比较。有任何想法吗? 最佳答案 触发该错误时,TNetSharingManager对象本身很可能实际上已经死亡(或不是首先创建的)。 FIntF = nil表达式是对该类实际字段的第一个引用,即它将指向无效的地址空间。 [编辑] 我下载了源代码,并按照以下步骤导入了TLB(Delphi 2010)。要执行该应用程序,我必须(a)以管理员身份运行Delphi,因为默认情况下我不是 super 用户,并且(b)必须添加对pUser nil的检查,因为最终的getProperties返回nil结构,但除此之外,代码可以正常运行。因此,很遗憾,我似乎无法重现您的问题。重读您的问题,您在编译时获得AV吗? 09-27 14:12