读书人

编译不通过大家帮帮忙看下解决方案

发布时间: 2012-03-03 15:33:03 作者: rapoo

编译不通过,大家帮帮忙看下
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.


[解决办法]
Show_TTFrmSiteAdd:function():Boolean;stdcall; //用户触发
TimerShow_TTFrmSiteAdd:function():Boolean;stdcall; //定时器触发


有这样写的吗? 晕
[解决办法]
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;


[解决办法]
不能吧,你用的是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;

读书人网 >.NET

热点推荐