• [DIY]Delphi下开发问题集锦


    【以下如未特殊说明,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是后娘养的?
    其实不然,具体实现如下

    Code
  • 相关阅读:
    正则表达式把所有Paul替换成Ringo:Paul Puala Pualine paul Paul
    DOM 和 BOM
    新手的grid布局
    css中的单位和css中的颜色表示方法
    css定位
    Winform 通过 WebBrowser 与 JS 交互
    PDF目录编辑器使用介绍
    [.NET] 控制只启动单个指定外部程序
    搭建 Frp 来远程内网 Windows 和 Linux 机子
    CentOs8 nmcli命令行方式操作网卡配置
  • 原文地址:https://www.cnblogs.com/feedback/p/1408244.html
Copyright © 2020-2023  润新知