起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: xxb

【搞定】X3下导入Dll运行时错误[请求][请求]

[复制链接]
 楼主| 发表于 2007-5-24 09:47:16 | 显示全部楼层
昨天试了下,感觉出入有好些出入。不太好弄,今天来一点一点请教
回复 支持 反对

使用道具 举报

发表于 2007-5-24 09:54:06 | 显示全部楼层
X3中不能调用Delphi中的class方法,所以,你需要在X3中调用CreateOleObject来创建接口
回复 支持 反对

使用道具 举报

发表于 2007-5-24 09:58:49 | 显示全部楼层
40楼给的方法就是说在Delphi中的
class function CoLayer.Create: CMapXLayer;
begin
  Result := CreateComObject(CLASS_Layer) as CMapXLayer;
end;
在平台上无法调用,所以你把这个函数的内容(Result := CreateComObject(CLASS_Layer) as CMapXLayer;)写到X3中
由于CreateComObject不能用,你用CreateOleObject来代替
直接在X3平台上写
Result := Business.System.ComObj.CreateOleObject('xxxx') as CMapXLayer;
这样就在X3平台上创建CMapXLayer接口了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:06:35 | 显示全部楼层
//视图改变事件
procedure TMainForm.YnMapMapViewChanged(Sender: TObject);
var
    rect: CMapXRectangle;
    newPoint : CMapXpoint;
    newPoints : CMapXpoints;
    pSDEFac     : CMapXpoint;
    pSDEFacs     :CMapXpoints ;         //IWorkspaceFactory
begin
   pSDEFac:=Business.System.ComObj.CreateOleObject('CMapXPoint') as  CMapXpoint;
   pSDEFacs:=Business.System.ComObj.CreateOleObject('CMapXPoints')  as CMapXpoints;
到pSDEFac:=Business.编译通不过。无效的类别字符串类型:EOleSysError.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:07:41 | 显示全部楼层
注册表:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Interface\{968303A6-8F18-11D0-8796-00AA00B7EF73}]
@="CMapXPoint"

[HKEY_CLASSES_ROOT\Interface\{968303A6-8F18-11D0-8796-00AA00B7EF73}\ProxyStubClsid]
@="{00020420-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\Interface\{968303A6-8F18-11D0-8796-00AA00B7EF73}\ProxyStubClsid32]
@="{00020420-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\Interface\{968303A6-8F18-11D0-8796-00AA00B7EF73}\TypeLib]
@="{E760686B-BC9E-4802-9ECF-175FDF4062CE}"
"Version"="5.0"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:08:26 | 显示全部楼层
注册表:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Interface\{968303A2-8F18-11D0-8796-00AA00B7EF73}]
@="CMapXPoints"

[HKEY_CLASSES_ROOT\Interface\{968303A2-8F18-11D0-8796-00AA00B7EF73}\ProxyStubClsid]
@="{00020420-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\Interface\{968303A2-8F18-11D0-8796-00AA00B7EF73}\ProxyStubClsid32]
@="{00020420-0000-0000-C000-000000000046}"

[HKEY_CLASSES_ROOT\Interface\{968303A2-8F18-11D0-8796-00AA00B7EF73}\TypeLib]
@="{E760686B-BC9E-4802-9ECF-175FDF4062CE}"
"Version"="5.0"
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:24:38 | 显示全部楼层
上面的有什么地方要改啊,怎么连编译都过不了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:34:07 | 显示全部楼层
我的资料都发给你们了,问题在里面,请认真解决,解决不了给个意见,我以好对老大有个
交待,本来这样的问题我早就该叫老大出面直接联系你们了,搞我们这行的大家都应该多体
量。我是进退两难,我没有多的时间了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 10:35:01 | 显示全部楼层
static function  TMainForm.CP(): CMapXpoint;
begin
  Result := Business.System.ComObj.CreateOleObject('CMapXPoint') as  CMapXpoint;
end;
这样不行的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-5-24 11:11:33 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-11 06:56 , Processed in 0.041302 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表