library Week;uses
Windows,
SysUtils,{$R *.res}function TodayWeek(TadayDate : TDatetime):string; stdcall;
var Today_week:integer;
begin
Today_week:=DayofWeek(TadayDate);
case Today_week of
1:result:='星期日';
2:result:='星期一';
3:result:='星期二';
4:result:='星期三';
5:result:='星期四';
6:result:='星期五';
7:result:='星期六';
end;
end;
exports
TodayWeek index 1 name '';begin
end.以上写的动态连接库以下动态调用Dll
unit UDll;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TfrmDll = class(TForm)
Week: TButton;
lbWeek: TLabel;
procedure WeekClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmDll: TfrmDll;implementation{$R *.dfm}
type
TStrFunc = function (TadayDate : TDatetime):string; stdcall;
var
Handle: THandle;
TodayWeek : TStrFunc ;
procedure LoadFuncDll;
begin
if Handle = 0 then
begin
Handle := LoadLibrary('Week.dll');
if Handle = 0 then
raise Exception.Create('Week.dll 加载失败');
try
@TodayWeek := GetProcAddress(Handle, Pointer(HiWord(0) or LoWord(5)));
if @TodayWeek = nil then
raise Exception.Create('Week.dll 中没有输出 TodayWeek 函数');
except
FreeLibrary(Handle);
Handle := 0;
raise;
end;
end;
end; procedure FreeFuncDll;
begin
if Handle <> 0 then
begin
FreeLibrary(Handle);
Handle := 0;
@TodayWeek := nil;
end;
end;procedure TfrmDll.WeekClick(Sender: TObject);
begin
if @TodayWeek = nil then LoadFuncDll;
lbWeek.Caption:=TodayWeek(Date); //获取到结果了
FreeFuncDll; //运行到这就报错了 end;
initializationfinalization
FreeFuncDll;end.不知道错在哪呢,高手帮帮忙哦!!
Windows,
SysUtils,{$R *.res}function TodayWeek(TadayDate : TDatetime):string; stdcall;
var Today_week:integer;
begin
Today_week:=DayofWeek(TadayDate);
case Today_week of
1:result:='星期日';
2:result:='星期一';
3:result:='星期二';
4:result:='星期三';
5:result:='星期四';
6:result:='星期五';
7:result:='星期六';
end;
end;
exports
TodayWeek index 1 name '';begin
end.以上写的动态连接库以下动态调用Dll
unit UDll;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TfrmDll = class(TForm)
Week: TButton;
lbWeek: TLabel;
procedure WeekClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmDll: TfrmDll;implementation{$R *.dfm}
type
TStrFunc = function (TadayDate : TDatetime):string; stdcall;
var
Handle: THandle;
TodayWeek : TStrFunc ;
procedure LoadFuncDll;
begin
if Handle = 0 then
begin
Handle := LoadLibrary('Week.dll');
if Handle = 0 then
raise Exception.Create('Week.dll 加载失败');
try
@TodayWeek := GetProcAddress(Handle, Pointer(HiWord(0) or LoWord(5)));
if @TodayWeek = nil then
raise Exception.Create('Week.dll 中没有输出 TodayWeek 函数');
except
FreeLibrary(Handle);
Handle := 0;
raise;
end;
end;
end; procedure FreeFuncDll;
begin
if Handle <> 0 then
begin
FreeLibrary(Handle);
Handle := 0;
@TodayWeek := nil;
end;
end;procedure TfrmDll.WeekClick(Sender: TObject);
begin
if @TodayWeek = nil then LoadFuncDll;
lbWeek.Caption:=TodayWeek(Date); //获取到结果了
FreeFuncDll; //运行到这就报错了 end;
initializationfinalization
FreeFuncDll;end.不知道错在哪呢,高手帮帮忙哦!!
procedure LoadFuncDll;
begin
if Handle = 0 then
begin
Handle := LoadLibrary('Week.dll');
if Handle = 0 then
raise Exception.Create('Week.dll 加载失败');
try
@TodayWeek := GetProcAddress(Handle, Pointer(HiWord(0) or LoWord(1)));
if @TodayWeek = nil then
raise Exception.Create('Week.dll 中没有输出 TodayWeek 函数');
except
FreeLibrary(Handle);
Handle := 0;
raise;
end;
end;
end;