源代码如下:
library Update;uses
SysUtils,IdBaseComponent, IdComponent,windows,
IdHTTP,IniFiles,IdTCPClient, IdTCPConnection,
Classes;{$R *.res}
function GetTempPathFileName: string;
var
SPath,Sfile : array[0..254] of char;
begin
GetTempPath(254,SPath);
GetTempFileName(SPath,'~DL',0,Sfile);
Result := Sfile;
DeleteFile(pchar(Result));
end;function GetNewVer(pUrl : pchar; iSta : integer): Integer; stdcall;
var
idHttp : TIdHttp;
msTemp : TMemoryStream;
iniTemp : TIniFile;
s : string;
begin
idHttp := TIdHttp.Create(nil);
msTemp := TMemoryStream.Create;try
idHttp.Get(purl,msTemp);
s := GetTempPathFileName;
msTemp.SaveToFile(s);
iniTemp := TIniFile.Create(s);
Result := iniTemp.ReadInteger('ver','ver',0);
iniTemp.Free;
except
on exception do
begin
if iniTemp <> nil then
iniTemp.Free;
msTemp.Free;
idHttp.Free;
end;
end;
DeleteFile(pchar(s));
end;exports
GetNewVer;begin
end.以上是一个获取远程版本信息文件的DLL,是用IDHTTP组件来下载,但是一旦URL有误,整个DLL的调用就会错,在idHttp.Get(purl,msTemp);外的try...except却又没有正常收到异常,这是为何,应该如何处理,望前辈分析一下,谢谢。
library Update;uses
SysUtils,IdBaseComponent, IdComponent,windows,
IdHTTP,IniFiles,IdTCPClient, IdTCPConnection,
Classes;{$R *.res}
function GetTempPathFileName: string;
var
SPath,Sfile : array[0..254] of char;
begin
GetTempPath(254,SPath);
GetTempFileName(SPath,'~DL',0,Sfile);
Result := Sfile;
DeleteFile(pchar(Result));
end;function GetNewVer(pUrl : pchar; iSta : integer): Integer; stdcall;
var
idHttp : TIdHttp;
msTemp : TMemoryStream;
iniTemp : TIniFile;
s : string;
begin
idHttp := TIdHttp.Create(nil);
msTemp := TMemoryStream.Create;try
idHttp.Get(purl,msTemp);
s := GetTempPathFileName;
msTemp.SaveToFile(s);
iniTemp := TIniFile.Create(s);
Result := iniTemp.ReadInteger('ver','ver',0);
iniTemp.Free;
except
on exception do
begin
if iniTemp <> nil then
iniTemp.Free;
msTemp.Free;
idHttp.Free;
end;
end;
DeleteFile(pchar(s));
end;exports
GetNewVer;begin
end.以上是一个获取远程版本信息文件的DLL,是用IDHTTP组件来下载,但是一旦URL有误,整个DLL的调用就会错,在idHttp.Get(purl,msTemp);外的try...except却又没有正常收到异常,这是为何,应该如何处理,望前辈分析一下,谢谢。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货