DELPHI如何判断创建对象不成功则创建另外一个对象

varArr:array[0..2]ofstring;Tmp:string;i:Integer;HttP:Variant;beginresult:='';Http:=Cr... var
Arr: array[0..2] of string;
Tmp: string; i: Integer;
HttP: Variant;
begin
result := '';
Http := CreateOleObject('Msxml2.ServerXMLHTTP'); //优先采用无缓存的
if Http = 0 then //判断 创建的HTTP对象不成功则执行创建下一个对象
begin
Http := CreateOleObject('Msxml2.XMLHTTP');
if Http = 0 then //判断 创建的HTTP对象不成功则执行创建下一个对象
begin
Http := CreateOleObject('Microsoft.XMLHTTP');
if Http = 0 then //判断 创建的HTTP对象不成功则执行创建下一个对象
begin
Http := CreateOleObject('WinHttp.WinHttpRequest.5.1');
if Http = 0 then //判断 创建的HTTP对象不成功则退出
Exit;
end;
end;
end;

我的想法是,创建HTTP 对象,然后判断对象是否创建成功,不成功则执行创建另外一个对象
依次类推,
展开
 我来答
kcxnvbdbd
2014-09-28 · TA获得超过523个赞
知道小有建树答主
回答量:885
采纳率:50%
帮助的人:619万
展开全部

把 CreateOleObject 函数改造一下就行了

function CreateOleObject(const ClassName: string; var isSuccess: Boolean): IDispatch;
var
  ClassID: TCLSID;
begin
  try
    isSuccess := false;
    ClassID := ProgIDToClassID(ClassName);
{$IFDEF CPUX86}
    try
      Set8087CW( Default8087CW or $08);
{$ENDIF CPUX86}
      isSuccess := Succeeded(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
        CLSCTX_LOCAL_SERVER, IDispatch, Result));
{$IFDEF CPUX86}
    finally
      Reset8087CW;
    end;
{$ENDIF CPUX86}
  except
  end;
end;


使用

var

  HttP: Variant;

  succ: Boolean;

begin

  HttP := CreateOleObject('Msxml2.ServerXMLHTT1P', succ);

  if succ = False then

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hks554488
2014-09-28 · TA获得超过395个赞
知道小有建树答主
回答量:593
采纳率:0%
帮助的人:458万
展开全部
用try except吧,有异常发生就说明不成功。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
changjeff
2014-09-28 · TA获得超过804个赞
知道小有建树答主
回答量:2008
采纳率:54%
帮助的人:842万
展开全部
assigned判断就行了
追问
if Assigned(http) then 吗,这样报错哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式