首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-03 
编译不通过,大家帮帮忙看下unit Unit1interfaceusesWindows, Messages, SysUtils, Variants, Classes, Gr

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

热点排行