K
kfzd
Unregistered / Unconfirmed
GUEST, unregistred user!
我为一个asp页面写了一个com组件,该组件完成对数据库的访问。
我在编程时用到了try except end 结构。
对于程序中出现的错误,我用 raise EAbort.create('错误信息')的方式抛出异常。
现在的问题是:在delphi中产生的异常居然被IIS提前捕获到了,老是弹出“脚本调试器”的窗口。然后就显示
----------------
试图访问的网页出现问题,无法显示。
--------------------------------------------------------------------------------
请尝试以下方法:
单击 刷新按钮或者梢候再试。
打开 127.0.0.1 主页,然后查找与所需信息相关的链接。
HTTP 500.100 - 内部服务器错误 - ASP 错误
Internet 信息服务
--------------------------------------------------------------------------------
技术信息(适用于支持人员)
错误类型:
commit_com.Ly_comfunc_commit (0x8000FFFF)
/common/ly_common.asp, 第 1143 行
浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
页:
POST 51 bytes to /test.asp
POST 数据:
fjgbh=0000000001&fcommittype=1&Submit3=%CC%E1%BD%BB
时间:
2003年6月24日, 16:52:05
详细信息:
Microsoft 支持
------------------------
这样的话,我在程序中就无法用异常处理了。
盼望各位大侠指点迷津。
我的com程序如下
------------------------
unit Ly_comfunc_commit;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, AspTlb, commit_com_TLB, StdVcl,SysUtils,windows,lycommon_base;
const
CON_ASPSUCCESS = 'AAAAAAAAAA';
CON_ASPFAIL = 'BBBBBBBBBB';
CON_ARR_JLGLTABS: array [1..14] of string = ('M_BZbzb','M_BZDwxx','M_BZjclb',
'M_BZjdgc','M_BZjdxm', 'M_BZjdxmdzb','M_BZjdxmgc','M_BZjdydzb','M_BZqjsb',
'M_BZqjsb_ls','M_BZsbdzb','M_BZsblb','M_Jdrydjb','M_Jdryxmdzb');
type
TLy_comfunc_commit = class(TASPMTSObject, ILy_comfunc_commit)
private
FRootPath: string;
FErrMsg: string;
//DM: TDM;
protected
function Get_FASPRootPath: PChar; safecall;
procedure Set_FASPRootPath(Value: PChar); safecall;
function Get_FErrorMsg: PChar; safecall;
procedure execcommit; safecall;
procedure Set_FErrorMsg(Value: PChar); safecall;
constructor Create;
function ExecUpLoadFile(strJGBH: string; var strErrMsg: string): Boolean;
end;
implementation
uses ComServ;
function TLy_comfunc_commit.Get_FASPRootPath: PChar;
begin
Result := PChar(FRootPath);
end;
procedure TLy_comfunc_commit.Set_FASPRootPath(Value: PChar);
begin
FRootPath := StrPas(Value);
end;
function TLy_comfunc_commit.Get_FErrorMsg: PChar;
begin
Result := PChar(FErrMsg);
end;
procedure TLy_comfunc_commit.execcommit;
var strJGBH, strCommitPath, strCommitType, strErrMsg: string;
begin
//dm := nil;
try
try
InitSysPathVariant(Server.MapPath('/')); //初始化其他的路径变量
strCommitPath := gsCurrentPath + 'commitdata/';
{先取得客户端传过来的各项参数}
strJGBH := Request.Form.Item['fjgbh'];
strCommitType := Request.Form.Item['fcommittype'];
//DM := TDM.Create(nil);
//if (not DM.InitDB(gsEtcPath + 'comcmt.ini',strErrMsg)) then raise EAbort.Create(strErrMsg);
case MyStrToInt(strCommitType) of
1: if (ExecUpLoadFile(strJGBH, strErrMsg)) then
begin
Response.Write(CON_ASPSUCCESS);
end
else
begin
Response.Write(CON_ASPFAIL + '错误原因:' + strErrMsg);
end;
2: ;
else
Response.Write(CON_ASPFAIL + '你提交的操作类别不正确');
end;
except
on E: Exception do
begin
Response.Write(CON_ASPFAIL + '[' + E.Message + ']');
raise;
end;
end;
finally
//if (Assigned(DM)) then FreeAndNil(DM);
end;
end;
procedure TLy_comfunc_commit.Set_FErrorMsg(Value: PChar);
begin
FErrMsg := StrPas(Value);
end;
constructor TLy_comfunc_commit.Create;
begin
inherited;
end;
function TLy_comfunc_commit.ExecUpLoadFile(strJGBH: string;
var strErrMsg: string): Boolean;
var i: Integer;
strSQL, strTab, strFile: string;
begin
Result := False;
(*for i := 1 to Length(CON_ARR_JLGLTABS) do
begin
strTab := Trim(CON_ARR_JLGLTABS);
{先清空属于该机构的数据}
strSQL := 'delete from ' + strTab;
ExecQuery(strSQL, DM.ADOQuery1);
{再装入XML文件}
strFile := gsUpLoadPath + strJGBH + '_' + strTab + '.xml';
if (not FileExists(strFile)) then raise EAbort.Create('xml文件' + strFile + '不存在');
strSQL := 'select * from ' + strTab + ' where 1=2';
OpenQuery(strSQL, DM.ADOQuery1);
if (not WriteXMLFileToTab(strFile, DM.ADOQuery1, nil, strErrMsg)) then
raise EAbort.Create(strErrMsg);
end;*)
end;
initialization
TAutoObjectFactory.Create(ComServer, TLy_comfunc_commit, Class_Ly_comfunc_commit,
ciMultiInstance, tmApartment);
end.
--------------------------
我在编程时用到了try except end 结构。
对于程序中出现的错误,我用 raise EAbort.create('错误信息')的方式抛出异常。
现在的问题是:在delphi中产生的异常居然被IIS提前捕获到了,老是弹出“脚本调试器”的窗口。然后就显示
----------------
试图访问的网页出现问题,无法显示。
--------------------------------------------------------------------------------
请尝试以下方法:
单击 刷新按钮或者梢候再试。
打开 127.0.0.1 主页,然后查找与所需信息相关的链接。
HTTP 500.100 - 内部服务器错误 - ASP 错误
Internet 信息服务
--------------------------------------------------------------------------------
技术信息(适用于支持人员)
错误类型:
commit_com.Ly_comfunc_commit (0x8000FFFF)
/common/ly_common.asp, 第 1143 行
浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
页:
POST 51 bytes to /test.asp
POST 数据:
fjgbh=0000000001&fcommittype=1&Submit3=%CC%E1%BD%BB
时间:
2003年6月24日, 16:52:05
详细信息:
Microsoft 支持
------------------------
这样的话,我在程序中就无法用异常处理了。
盼望各位大侠指点迷津。
我的com程序如下
------------------------
unit Ly_comfunc_commit;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
ComObj, ActiveX, AspTlb, commit_com_TLB, StdVcl,SysUtils,windows,lycommon_base;
const
CON_ASPSUCCESS = 'AAAAAAAAAA';
CON_ASPFAIL = 'BBBBBBBBBB';
CON_ARR_JLGLTABS: array [1..14] of string = ('M_BZbzb','M_BZDwxx','M_BZjclb',
'M_BZjdgc','M_BZjdxm', 'M_BZjdxmdzb','M_BZjdxmgc','M_BZjdydzb','M_BZqjsb',
'M_BZqjsb_ls','M_BZsbdzb','M_BZsblb','M_Jdrydjb','M_Jdryxmdzb');
type
TLy_comfunc_commit = class(TASPMTSObject, ILy_comfunc_commit)
private
FRootPath: string;
FErrMsg: string;
//DM: TDM;
protected
function Get_FASPRootPath: PChar; safecall;
procedure Set_FASPRootPath(Value: PChar); safecall;
function Get_FErrorMsg: PChar; safecall;
procedure execcommit; safecall;
procedure Set_FErrorMsg(Value: PChar); safecall;
constructor Create;
function ExecUpLoadFile(strJGBH: string; var strErrMsg: string): Boolean;
end;
implementation
uses ComServ;
function TLy_comfunc_commit.Get_FASPRootPath: PChar;
begin
Result := PChar(FRootPath);
end;
procedure TLy_comfunc_commit.Set_FASPRootPath(Value: PChar);
begin
FRootPath := StrPas(Value);
end;
function TLy_comfunc_commit.Get_FErrorMsg: PChar;
begin
Result := PChar(FErrMsg);
end;
procedure TLy_comfunc_commit.execcommit;
var strJGBH, strCommitPath, strCommitType, strErrMsg: string;
begin
//dm := nil;
try
try
InitSysPathVariant(Server.MapPath('/')); //初始化其他的路径变量
strCommitPath := gsCurrentPath + 'commitdata/';
{先取得客户端传过来的各项参数}
strJGBH := Request.Form.Item['fjgbh'];
strCommitType := Request.Form.Item['fcommittype'];
//DM := TDM.Create(nil);
//if (not DM.InitDB(gsEtcPath + 'comcmt.ini',strErrMsg)) then raise EAbort.Create(strErrMsg);
case MyStrToInt(strCommitType) of
1: if (ExecUpLoadFile(strJGBH, strErrMsg)) then
begin
Response.Write(CON_ASPSUCCESS);
end
else
begin
Response.Write(CON_ASPFAIL + '错误原因:' + strErrMsg);
end;
2: ;
else
Response.Write(CON_ASPFAIL + '你提交的操作类别不正确');
end;
except
on E: Exception do
begin
Response.Write(CON_ASPFAIL + '[' + E.Message + ']');
raise;
end;
end;
finally
//if (Assigned(DM)) then FreeAndNil(DM);
end;
end;
procedure TLy_comfunc_commit.Set_FErrorMsg(Value: PChar);
begin
FErrMsg := StrPas(Value);
end;
constructor TLy_comfunc_commit.Create;
begin
inherited;
end;
function TLy_comfunc_commit.ExecUpLoadFile(strJGBH: string;
var strErrMsg: string): Boolean;
var i: Integer;
strSQL, strTab, strFile: string;
begin
Result := False;
(*for i := 1 to Length(CON_ARR_JLGLTABS) do
begin
strTab := Trim(CON_ARR_JLGLTABS);
{先清空属于该机构的数据}
strSQL := 'delete from ' + strTab;
ExecQuery(strSQL, DM.ADOQuery1);
{再装入XML文件}
strFile := gsUpLoadPath + strJGBH + '_' + strTab + '.xml';
if (not FileExists(strFile)) then raise EAbort.Create('xml文件' + strFile + '不存在');
strSQL := 'select * from ' + strTab + ' where 1=2';
OpenQuery(strSQL, DM.ADOQuery1);
if (not WriteXMLFileToTab(strFile, DM.ADOQuery1, nil, strErrMsg)) then
raise EAbort.Create(strErrMsg);
end;*)
end;
initialization
TAutoObjectFactory.Create(ComServer, TLy_comfunc_commit, Class_Ly_comfunc_commit,
ciMultiInstance, tmApartment);
end.
--------------------------