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

JerryOne 2004-12-04 08:02:24
(一)﹑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的功能﹐而我直接調用該函數就可以。
...全文
124 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzlinux 2004-12-07
  • 打赏
  • 举报
回复
同意moonetra(moonetra)的意见。
你可以在Delphi中对String和PChar的类型进行互转。
moonetra 2004-12-07
  • 打赏
  • 举报
回复
难道写DLL的时候没有看到那一大段注释吗:DLL中不能用string作为返回值,应该使用PChar或者ShortString
JerryOne 2004-12-07
  • 打赏
  • 举报
回复
哎﹐失望中...
自己搞定
lybingyu 2004-12-06
  • 打赏
  • 举报
回复
这个问题不会,还得多多学习,帮你顶一下吧
JerryOne 2004-12-06
  • 打赏
  • 举报
回复
Delphi 區的朋友們﹐有遇見類似問題的嗎?
prosimon 2004-12-05
  • 打赏
  • 举报
回复
帮你顶一下
JerryOne 2004-12-05
  • 打赏
  • 举报
回复
那我的Dll中有几个被调函数有几个呢?
应该不是函数名的关系
JerryOne 2004-12-05
  • 打赏
  • 举报
回复
To:Blakhawk
我在Dll申明的函数是下面的过程
Blakhawk 2004-12-04
  • 打赏
  • 举报
回复
你在调用的时候只能用在被申明的函数名,比如你在上面(主调程序)
TitleSort,并且你最好是申明的函数名称也和dll中的相同(用sort);
然后你的TitleSort返回值是string,在windows2k中可能不被支持
请使用指针来返回函数的值(非标准数据类型)。
JerryOne 2004-12-04
  • 打赏
  • 举报
回复
Delphi區人還是少啊﹐這么久都沒有人
JerryOne 2004-12-04
  • 打赏
  • 举报
回复
(一)﹑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';

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧