程序定义如下:使用一个hsc3836.dll文件
function hs_state(state:integer):integer;stdcall;
function del_dbf(dbfno:integer):integer;stdcall;
function down_dbf(filename:pchar;dbfno:integer):integer;stdcall;
function down_prg(filename:pchar):integer;stdcall;
function down_psd(filename:pchar):integer;stdcall;
function up_dbf(filename:pchar;dbfno:integer):integer;stdcall;implementation
function hs_state;external 'hsc3836.dll' name 'hs_state';
function del_dbf;external 'hsc3836.dll' name 'del_dbf';
function down_dbf;external 'hsc3836.dll' name 'down_dbf';
function down_prg;external 'hsc3836.dll' name 'down_prg';
function down_psd;external 'hsc3836.dll' name 'down_psd';
function up_dbf;external 'hsc3836.dll' name 'up_dbf';
程序事件:
procedure Tcbjsl_fm.xz_buttonClick(Sender: TObject);
var
a,state,returnvalue,i:integer;
filename:string;
begin
state:=hs_state(5);//一调用这个就出错,只有在delphi7.0才出错,这说明调用不成功!!!....
end;请问我要使用什么方法才能调用成功?
function hs_state(state:integer):integer;stdcall;
function del_dbf(dbfno:integer):integer;stdcall;
function down_dbf(filename:pchar;dbfno:integer):integer;stdcall;
function down_prg(filename:pchar):integer;stdcall;
function down_psd(filename:pchar):integer;stdcall;
function up_dbf(filename:pchar;dbfno:integer):integer;stdcall;implementation
function hs_state;external 'hsc3836.dll' name 'hs_state';
function del_dbf;external 'hsc3836.dll' name 'del_dbf';
function down_dbf;external 'hsc3836.dll' name 'down_dbf';
function down_prg;external 'hsc3836.dll' name 'down_prg';
function down_psd;external 'hsc3836.dll' name 'down_psd';
function up_dbf;external 'hsc3836.dll' name 'up_dbf';
程序事件:
procedure Tcbjsl_fm.xz_buttonClick(Sender: TObject);
var
a,state,returnvalue,i:integer;
filename:string;
begin
state:=hs_state(5);//一调用这个就出错,只有在delphi7.0才出错,这说明调用不成功!!!....
end;请问我要使用什么方法才能调用成功?
这样写应该没有问题
procedure FaxToBmp.Execute;
var TempHandle:THandle;
DJCvt_Bfx2Bmp:Function(Bfxfilename:Pchar;Bmpfilename:Pchar;PageMode:integer;RotateMode:integer):integer;Stdcall;
begin //动态调用
FreeonTerminate:=true;
TempHandle:=LoadLibrary(pchar(Path+'DJ_BFX.dll'));
try
if TempHandle=0 then
raise Exception.Create('不能加载DLL');
@DJCvt_Bfx2Bmp:=GetProcAddress(TempHandle,pchar('DJCvt_Bfx2Bmp'));
if @DJCvt_Bfx2Bmp<>nil then
DJCvt_Bfx2Bmp('F:\TempFax.bfx','F:\TempFax.bmp',1,1)
else
RaiseLastOSError;if DirectoryExists(path+'Temp')=false then
CreateDir(path+'Temp');
DJCvt_Bfx2Bmp(Pchar(Path+'FaxFile\Receive\'
+FormatDateTime('YYYYmm',FormFaxReceive.DBGrid1.Fields[2].value)+'\'
+FormFaxReceive.DBGrid1.Fields[0].AsString),Pchar(Path+'Temp\TempFax.bmp'),1,1);
{ Place thread code here }
finally
FreeLibrary(TempHandle);
Synchronize(ShowPreview);
end;end;