CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

Dll中的函數與一般函數一樣么﹐為什么不能夠調用???

楼主JerryOne()2004-12-04 20:02:24 在 Delphi / Windows SDK/API 提问

(一)﹑Dll定義  
  uses  
  SysUtils,  
      ADODB,  
      DBGrids,      
      Classes;  
  function   TitleSort(DG1:TDBGrid;Col:TColumn):String;   stdcall;  
  var  
            DataSet:   TDataSet;  
  begin  
            DataSet   :=   Col.Field.DataSet;  
            if   DataSet   is   TCustomADODataSet   then  
            try  
            begin  
                    with   TCustomADODataSet(DataSet)   do  
                    begin  
                            if   (Pos(Col.Field.FieldName,   Sort)   =   1)   and   (Pos('   DESC',   Sort)   =   0)   then  
                                    Sort   :=   Col.Field.FieldName   +   '   DESC'  
                            else  
                                    Sort   :=   Col.Field.FieldName   +   '   ASC';  
                    end;  
            end  
            except  
                    Application.MessageBox('不能對該列進行排序!','請注意:',0);  
            end;  
  end;  
   
  exports  
          TitleSort   name   'Sort';  
   
  (二)﹑調用Dll  
      implementation  
  const  
      gdi32='Sort.dll';  
      procedure   TitleSort(DG1:TDBGrid;Column:TColumn);   stdcall;   external   gdi32   name   'Sort';  
      {$R   *.dfm}  
  procedure   Tform1.DBGrid2TitleClick(Column:   TColumn);  
  begin  
          TitleSort(DBGrid2,Column);  
  end;  
   
   
  為什么不能夠實現函數TitleSort的功能﹐而我直接調用該函數就可以。  
  问题点数:20、回复次数:11Top

1 楼JerryOne()回复于 2004-12-04 20:06:29 得分 0

(一)﹑Dll定義  
  uses  
  SysUtils,  
      ADODB,  
      DBGrids,      
      Classes;  
  procedure   TitleSort(DG1:TDBGrid;Col:TColumn);   stdcall;  
  var  
            DataSet:   TDataSet;  
  begin  
            DataSet   :=   Col.Field.DataSet;  
            if   DataSet   is   TCustomADODataSet   then  
            try  
            begin  
                    with   TCustomADODataSet(DataSet)   do  
                    begin  
                            if   (Pos(Col.Field.FieldName,   Sort)   =   1)   and   (Pos('   DESC',   Sort)   =   0)   then  
                                    Sort   :=   Col.Field.FieldName   +   '   DESC'  
                            else  
                                    Sort   :=   Col.Field.FieldName   +   '   ASC';  
                    end;  
            end  
            except  
                    Application.MessageBox('不能對該列進行排序!','請注意:',0);  
            end;  
  end;  
   
  exports  
          TitleSort   name   'Sort';Top

2 楼JerryOne()回复于 2004-12-04 22:22:37 得分 0

Delphi區人還是少啊﹐這么久都沒有人Top

3 楼Blakhawk(黑鹰)回复于 2004-12-04 22:40:52 得分 7

你在调用的时候只能用在被申明的函数名,比如你在上面(主调程序)  
  TitleSort,并且你最好是申明的函数名称也和dll中的相同(用sort);  
  然后你的TitleSort返回值是string,在windows2k中可能不被支持  
  请使用指针来返回函数的值(非标准数据类型)。Top

4 楼prosimon(西蒙)回复于 2004-12-05 09:22:20 得分 2

帮你顶一下Top

5 楼JerryOne()回复于 2004-12-05 13:47:00 得分 0

To:Blakhawk  
  我在Dll申明的函数是下面的过程Top

6 楼JerryOne()回复于 2004-12-05 13:47:58 得分 0

那我的Dll中有几个被调函数有几个呢?  
  应该不是函数名的关系Top

7 楼JerryOne()回复于 2004-12-06 20:42:54 得分 0

Delphi   區的朋友們﹐有遇見類似問題的嗎?Top

8 楼lyBingYu(冰雨)回复于 2004-12-06 21:18:50 得分 1

这个问题不会,还得多多学习,帮你顶一下吧Top

9 楼JerryOne()回复于 2004-12-07 19:40:21 得分 0

哎﹐失望中...  
  自己搞定Top

10 楼moonetra(moonetra)回复于 2004-12-07 21:20:57 得分 5

难道写DLL的时候没有看到那一大段注释吗:DLL中不能用string作为返回值,应该使用PChar或者ShortStringTop

11 楼xzlinux(xz)回复于 2004-12-07 21:30:59 得分 5

同意moonetra(moonetra)的意见。  
  你可以在Delphi中对String和PChar的类型进行互转。Top

相关问题

  • 为什么钩子函数(Hook Procedures)一般写在dll中,不可以写在使用钩子的exe中吗??
  • DLL调用函数问题
  • DLL的函数调用????
  • DLL函数套用 LPSTR用什么代?
  • 如何使用dll中的函数
  • 关于DLL中的函数调用
  • 调用.DLL中函数的问题?
  • 如何调用DLL中的函数。
  • dll,函数调用时的问题
  • jsp如何调用dll中的函数?

关键词

  • 函数
  • dll
  • titlesort
  • 函數
  • tcustomadodataset
  • fieldname+
  • sort
  • tcolumn
  • col
  • 申明

得分解答快速导航

  • 帖主:JerryOne
  • Blakhawk
  • prosimon
  • lyBingYu
  • moonetra
  • xzlinux

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo