编译不通过,大家帮帮忙看下

zdx0702 2011-10-31 12:29:27
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
private
{ Private declarations }
public
function LoadDlldb(i:integer):Boolean;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
function TForm1.LoadDlldb(i:integer):Boolean;
//调用初始化数据库DLL
//i:0:用户
//i:1:定时器
var
dllhandle : THandle; //句柄
Show_TTFrmSiteAdd:function():Boolean;stdcall; //用户触发
TimerShow_TTFrmSiteAdd:function():Boolean;stdcall; //定时器触发
begin
Result:=False;
if not FileExists('SiteAddDel.dll') then
begin
showmessage('缺少SiteAddDel.dll文件,无法完成此操作.');
exit;
end;
dllhandle := LoadLibrary(pchar('SiteAddDel.dll'));
try
try
case i of
0:begin
@Show_TTFrmSiteAdd := GetProcAddress(dllhandle,'Show_TTFrmSiteAdd');
Result:=Show_TTFrmSiteAdd();
end;
1:begin
@TimerShow_TTFrmSiteAdd := GetProcAddress(dllhandle,'TimerShow_TTFrmSiteAdd');
Result:=TimerShow_TTFrmSiteAdd();
end;
end;
except
end;
finally
//FreeLibrary(dllhandle);
end;
end;


end.
...全文
60 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinoalex 2011-10-31
  • 打赏
  • 举报
回复
Show_TTFrmSiteAdd:function():Boolean;stdcall; //用户触发
TimerShow_TTFrmSiteAdd:function():Boolean;stdcall; //定时器触发


有这样写的吗? 晕
zdx0702 2011-10-31
  • 打赏
  • 举报
回复
不知道怎么就给好了;

声明的几种方式都能通过编译了
一、
Show_TTFrmSiteAdd:function():Boolean;stdcall;//用户触发
TimerShow_TTFrmSiteAdd:function():Boolean;stdcall; //定时器
二、
type
tShow_TTFrmSiteAdd=function():Boolean;stdcall;//用户触发
tTimerShow_TTFrmSiteAdd=function():Boolean;stdcall; //定时器
TForm1 = class(TForm)
三、
function TForm1.LoadDlldb(i:integer):Boolean;
type
tShow_TTFrmSiteAdd=function():Boolean;stdcall;//用户触发
tTimerShow_TTFrmSiteAdd=function():Boolean;stdcall; //定时器
---------
还没找到早上为什么不能通过编译的原因,中午吃饭回来几种声明方式都通过编译了;真TM郁闷
大家分分,结贴
某某某 2011-10-31
  • 打赏
  • 举报
回复
不能吧,你用的是delphi几的编译器啊,delphi2005,和delphiXE我都测试过,没问题的啊,报错肯定是你这个文件的其他地方报错的,如果你用的是其他版本,你按照下面改一下:

type
tShow_TTFrmSiteAdd=function():Boolean;stdcall;//用户触发
tTimerShow_TTFrmSiteAdd=function():Boolean;stdcall; //定时器
提到前面,放在:
放在
type
tShow_TTFrmSiteAdd=function():Boolean;stdcall;//用户触发
tTimerShow_TTFrmSiteAdd=function():Boolean;stdcall; //定时器
TForm1 = class(TForm)
然后按照下面定义函数:

function TForm1.LoadDlldb(i:integer):Boolean;
var
dllhandle : THandle; //句柄
Show_TTFrmSiteAdd:tShow_TTFrmSiteAdd;
TimerShow_TTFrmSiteAdd:tTimerShow_TTFrmSiteAdd;
begin
Result:=False;
if not FileExists('SiteAddDel.dll') then
begin
showmessage('缺少SiteAddDel.dll文件,无法完成此操作.');
exit;
end;
dllhandle := LoadLibrary(pchar('SiteAddDel.dll'));
try
try
case i of
0:begin
@Show_TTFrmSiteAdd := GetProcAddress(dllhandle,'Show_TTFrmSiteAdd');
Result:=Show_TTFrmSiteAdd();
end;
1:begin
@TimerShow_TTFrmSiteAdd := GetProcAddress(dllhandle,'TimerShow_TTFrmSiteAdd');
Result:=TimerShow_TTFrmSiteAdd();
end;
end;
except
end;
finally
//FreeLibrary(dllhandle);
end;
end;
zdx0702 2011-10-31
  • 打赏
  • 举报
回复
function TForm1.LoadDlldb(i:integer):Boolean;
type
tShow_TTFrmSiteAdd=function():Boolean;stdcall;//用户触发
tTimerShow_TTFrmSiteAdd=function():Boolean;stdcall; //定时器
var
dllhandle : THandle; //句柄
Show_TTFrmSiteAdd:tShow_TTFrmSiteAdd;
TimerShow_TTFrmSiteAdd:tTimerShow_TTFrmSiteAdd;
begin
Result:=False;
if not FileExists('SiteAddDel.dll') then
begin
showmessage('缺少SiteAddDel.dll文件,无法完成此操作.');
exit;
end;
dllhandle := LoadLibrary(pchar('SiteAddDel.dll'));
try
try
case i of
0:begin
@Show_TTFrmSiteAdd := GetProcAddress(dllhandle,'Show_TTFrmSiteAdd');
Result:=Show_TTFrmSiteAdd();
end;
1:begin
@TimerShow_TTFrmSiteAdd := GetProcAddress(dllhandle,'TimerShow_TTFrmSiteAdd');
Result:=TimerShow_TTFrmSiteAdd();
end;
end;
except
end;
finally
//FreeLibrary(dllhandle);
end;
end;
---------------------------------
[Error] Unit1.pas(33): BEGIN expected but END found
[Error] Unit1.pas(35): Declaration expected but end of file found
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
先声明类型还是不行呀;编译报出这个
sundayzhao 2011-10-31
  • 打赏
  • 举报
回复
Show_TTFrmSiteAdd:function():Boolean;stdcall; //用户触发
TimerShow_TTFrmSiteAdd:function():Boolean;stdcall; //定时器触
错了
应该先声明类型
type

tShow_TTFrmSiteAdd=function():Boolean;//用户触发
tTimerShow_TTFrmSiteAdd=function():Boolean; //定时器

var

Show_TTFrmSiteAdd:tShow_TTFrmSiteAdd;
TimerShow_TTFrmSiteAdd:tTimerShow_TTFrmSiteAdd;

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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