| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1378 人关注过本帖
标题:如何调用delphi开发的DLL函数
只看楼主 加入收藏
VFP09
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
如何调用delphi开发的DLL函数
delphi调用test.dll中的函数,代码如下,VFP如何实现?

procedure Fmttotable(var tablefilename, fmtfilename, curpath: pchar; userid: byte); stdcall; external 'testdll.dll';
procedure showall var tablefilename, fmtfilename, curpath: pchar; prec: integer; pmode: byte); stdcall; external 'testdll.dll';

释放
procedure Desall; stdcall; external 'testdll.dll';

本人用declear后,调用fmttotable 时,提示“test.dll"不能加载
搜索更多相关主题的帖子: procedure 开发 如何 procedure 开发 如何 
2011-09-21 22:20
VFP09
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-21
收藏
得分:0 
    Declare   Fmttotable IN testdll.dll;
        STRING @ tablefilename ,;
        STRING @ fmtfilename ,;
        STRING @ curpath ,;
        integer nuserid
    Declare   showall IN testdll.dll;
        STRING @ tablefilename ,;
        STRING @ fmtfilename ,;
        string @ curpath ,;
        integer rectime,;
        integer pmode
      
LOCAL lcFmtFileName, lcPath, lcdbPath,lcrectime
lcFmtFileName = GETFILE()
IF FILE(lcFmtFileName )   
    lcpath=cpath
     iRecTime = 0
    lcdbPath = lcPath+ '\sys\test.db'
    Fmttotable(lcdbPath,lcFmtFileName, lcPath, 1)
    showall(lcdbPath, lcFmtFileName, lcPath, iRecTime, 1)
else
    =MESSAGEBOX(lcFmtFileName +'不存在!',0+48,'提示')
ENDIF
请高手帮忙看看,上述代码错在哪里?
2011-09-21 22:25
VFP09
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-21
收藏
得分:0 
与2楼重复

[ 本帖最后由 VFP09 于 2011-9-23 12:48 编辑 ]
2011-09-21 22:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:14 
运行时报告什么错?

授人以渔,不授人以鱼。
2011-09-23 09:18
VFP09
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-21
收藏
得分:0 
提示:不能加载32位DLL  
2011-09-23 12:39
VFP09
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-21
收藏
得分:0 

delphi代码如下,如何用VFP实现? 是否与变量userid的类型( byte)有关,VFP如何定义它?

调用全程纪录动态库。
procedure ShowRecord;
var
  s, CurPath, DbPath: pchar;
  iRecTime: integer;
begin
  s := pChar(格式化文件名);
   if not FileExists(s) then
  begin
    Application.MessageBox(pchar('文件' + s + #13#10 + '不存在或无法访问'), '警告');
    Exit;
  end;
  iRecTime := iPos;//定位纪录时间(时*3600+分*60+秒)
  try
    CurPath := pChar(ExtractFilePath(Application.ExeName));
    DbPath := pChar(CurPath + 'data\test.db');
    读入过程,监控分析模式
    Fmttotable(DbPath,s , CurPath, 1);
    显示全程记录,从头开始显示
    showall(DbPath, s, CurPath, iRecTime, 1);
    desall;
      
  finally
  end;
end;
2011-09-23 12:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
delphi写的DLL也要在Windows中注册,VFP中使用时要用SET LIBRARY TO宣告(或者在项目中包含该DLL库)。

授人以渔,不授人以鱼。
2011-09-23 12:47
VFP09
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-21
收藏
得分:0 
已使用regsvr32注册.
set library to "testdll.dll" 时提示:不是VFP的.exe文件。

2011-09-23 12:56
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我不懂delphi,不知道怎么做DLL库函数。用别的语言调用这个DLL没问题么?

授人以渔,不授人以鱼。
2011-09-23 13:03
VFP09
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-9-21
收藏
得分:0 
谢谢TonyDeng。别的语言俺不懂的
2011-09-23 13:08
快速回复:如何调用delphi开发的DLL函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037687 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved