• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

[DIY]Delphi下开发问题集锦

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

【以下如未特殊说明,Delphi版本均为D7】欢迎大家补充
<不知道还有多少兄弟还坚持Delphi,希望大家不要放弃~>

1.导入类库不正确。

典型症状为IFeatureLayer.Get_FeatureClass后要么不正确,要么为nil。
版本:D7
解决办法:安装D7补丁1。推荐地址:http://www.2ccc.com/article.asp?articleid=1202

2.Delphi下调用接口方法,不能按照属性来调用,而且,不能安全调用,经常需要OleCheck,代码写的很繁琐。
典型症状如下:
var
  pLyr:IFeatureLayer;
  pVisible:WordBool;
begin
OleCheck(pLyr.Get_Visible(pVisible));
而在dotnet下调用的代码则是:
            ESRI.ArcGIS.Carto.IFeatureLayer pLyr = null;
            bool pVisible = pLyr.Visible;
解决办法:
在导入类型库之前,进行Delphi环境设置
Tools | Environment Options | Type Library
在SafeCall function mapping选项下,勾选 "All v-table interfaces"
参考文章:http://forums.esri.com/Thread.asp?c=93&f=1170&t=165456&mc=6
从此,我们这样编写代码
var
  pLyr:IFeatureLayer;
  pVisible:WordBool;
begin
pVisible:=pLyr.Visible;
【如果目前已经有项目存在,建议不宜进行此项改动,因为涉及到的地方很多,修改的工作量很大】
3.在界面上的MapControl之类的控件,他们事件方法中带有OleVariant就会报错
典型症状和解决办法:参考http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=35420&page=1#pid447173
另外啰嗦一句:如果遇到不能确定类型的变量,可以将其修改为IUnknown,比如
  TMapControlOnViewRefreshed = procedure(ASender: TObject; ActiveView: IActiveView;
                                                           viewDrawPhase: Integer;
                                                           layerOrElement: IUnknown;
                                                           envelope: IEnvelope) of object;
其他的控件如果遇到类似问题,可以做同样修改。

4.浮点溢出
典型症状和解决办法
http://www.geo-spatial.net/csk/arcgis9/317.aspx

5.工具条自定义
典型症状:看到ESRI自带的例子D:\Program Files\ArcGIS\DeveloperKit\SamplesNET\Engine\ToolbarControlCustomization
哪怕是在VB下都可以很轻松的实现,但在Delphi下却为何如此困难?莫非Delphi是后娘养的?
其实不然,具体实现如下

 

.

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi公用函数发布时间:2022-07-18
下一篇:
Delphi最新的路线图发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap