Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从delphi中的路径创建新的GUID或文件ID_Delphi_Sdk_Guid_Voip_Delphi Xe4 - Fatal编程技术网

从delphi中的路径创建新的GUID或文件ID

从delphi中的路径创建新的GUID或文件ID,delphi,sdk,guid,voip,delphi-xe4,Delphi,Sdk,Guid,Voip,Delphi Xe4,我正在使用DelphiXe4创建一个Voip程序。我使用的是一个过时的VOIP SDK,它来自一家名为BigSpeed的公司,现在已不在使用当前代码指向以下路径“C:\Program Files(x86)\BigSpeed Voice SDK\”,其中存储了活动的x控件 LIBID_bsVoiChatCln: TGUID = '{D2A88515-99E0-4EEE-A030-E5D2AB306A03}'; IID_IbsVoiChatClnX: TGUID = '{5055A6

我正在使用DelphiXe4创建一个Voip程序。我使用的是一个过时的VOIP SDK,它来自一家名为BigSpeed的公司,现在已不在使用当前代码指向以下路径“C:\Program Files(x86)\BigSpeed Voice SDK\”,其中存储了活动的x控件

    LIBID_bsVoiChatCln: TGUID = '{D2A88515-99E0-4EEE-A030-E5D2AB306A03}';
    IID_IbsVoiChatClnX: TGUID = '{5055A626-56A1-4E58-A461-000A69CA3E03}';
    DIID_IbsVoiChatClnXEvents: TGUID = '{665DB561-22D3-4624-B55B-4416309A2E03}';
    CLASS_bsVoiChatClnX: TGUID = '{BE761C1E-1F6C-46F8-A99B-0AB29C9B2D03}'; 

如何创建新GUID并使程序从新目录访问active x控件。

看起来您不理解(或不解释)程序、库和GUID之间的关系

如何创建新的GUID和

1) GUID只是一个128位的随机数。因此,只需编辑其十六进制字符串即可“创建新GUID”。也可以在designtime中在Delphi源代码编辑器中按Ctrl+Shift+G。在运行时,您可以使用
SysUtils
单元的
CreateGUID
函数

但我不认为创建新的GUID对您有任何好处。如果有什么区别的话,它应该意味着显式声明与旧guid不兼容(因此与VOIP库不兼容)

从一个新目录

2) 为什么您认为您的VoIP库被安排为一组ActiveX控件?就因为那里有guid?没有任何包含guid的文本文件是ActiveX

ActiveX是专门安排的Windows服务器,在注册表中注册,以便任何程序都可以调用它们。有时,如果安装程序失败,您可以在事后注册它们

因此,您应该阅读您的库的手册,无论它们是否构成ActiveX,如果它们构成ActiveX,如何在Windows中注册它们(应由库安装程序完成)

如果安装程序未提供该库,则无法确保该库可以在其他位置工作。不仅程序需要连接到它,库本身也可能需要连接到它的其他部分

让程序访问激活的x控件

3) 如果您的库确实符合ActiveX规范,并且安装(注册)正确,那么您可以将它们导入Delphi IDE并像删除表和对话框一样将它们放到窗体上

4) 如果不想将VoIP组件放到表单上,则可以尝试在运行时使用
CoCreateInstance
创建它。但是首先你必须阅读一些关于微软COM的入门教程。您可能会错过一些高级概念,但您应该了解最基本的内容,如接口如何与类相似或不同,如何管理它们的生存期,如何为您的程序初始化和最终确定COM运行时,等等

  • c:\RAD Studio\9.0\OCX\Servers中所有与MS Office相关的示例\
5) 您也可以尝试绕过正确的Windows方式来查找和加载服务器,并尝试自己使用正确的DLL中的
DllGetClassObject
例程来查找和加载服务器。如果图书馆是允许的,它将工作。但是,如果它确实依赖Windows提供的服务,那么可能会出现各种崩溃和未满足的期望


如果我记忆犹新,您可以在早期的delphi HTML帮助单元中找到这种方法的示例。Microsoft HTML帮助提供了使用CoCreateInstance和运行时ActiveX服务器注册表的
后期绑定
,或将
早期绑定
作为DLL处理。这两个选项都提供了早期版本的HTML帮助API for Delphi。但是我可能错了。

看起来您不理解(或不解释)程序、库和guid之间的关系

如何创建新的GUID和

1) GUID只是一个128位的随机数。因此,只需编辑其十六进制字符串即可“创建新GUID”。也可以在designtime中在Delphi源代码编辑器中按Ctrl+Shift+G。在运行时,您可以使用
SysUtils
单元的
CreateGUID
函数

但我不认为创建新的GUID对您有任何好处。如果有什么区别的话,它应该意味着显式声明与旧guid不兼容(因此与VOIP库不兼容)

从一个新目录

2) 为什么您认为您的VoIP库被安排为一组ActiveX控件?就因为那里有guid?没有任何包含guid的文本文件是ActiveX

ActiveX是专门安排的Windows服务器,在注册表中注册,以便任何程序都可以调用它们。有时,如果安装程序失败,您可以在事后注册它们

因此,您应该阅读您的库的手册,无论它们是否构成ActiveX,如果它们构成ActiveX,如何在Windows中注册它们(应由库安装程序完成)

如果安装程序未提供该库,则无法确保该库可以在其他位置工作。不仅程序需要连接到它,库本身也可能需要连接到它的其他部分

让程序访问激活的x控件

3) 如果您的库确实符合ActiveX规范,并且安装(注册)正确,那么您可以将它们导入Delphi IDE并像删除表和对话框一样将它们放到窗体上

4) 如果不想将VoIP组件放到表单上,则可以尝试在运行时使用
CoCreateInstance
创建它。但是首先你必须阅读一些关于微软COM的入门教程。您可能会错过一些高级概念,但您应该了解最基本的内容,如接口与类的相似性和不同性、它们的生存期是如何管理的、COM运行时是如何初始化的 C:\MyFolder\MyDll.dll regsvr32 C:\MyFolder\MyDll.dll