0

(単純なバージョン)で作成されたoleオブジェクトがあります

obj := CreateOleObject('foo.bar');
obj.OnResult := DoOnResult;

procedure TMyDM.DoOnResult(Res: olevariant);

これはすべて機能しますが、res変数には関数String [] GetAns() があり、このように呼び出します。

var
 ans: array of string;
begin
 ans := Res.GetAns;
end;

これも機能します。ただし、配列が返されない場合があり、例外がスローされます。

一時的な解決策として、私はそれをブロック以外の空の試行でラップしましたが、これは悪いことです。VarIsArray(Res.GetAns)を試し まし たが、結果がnullの場合でも機能しません

正しい結果を確認する正しい方法は何ですか?

ps私はoleオブジェクトを制御できません

4

1 に答える 1

5

クリストファーはVarIsNull関数を使用してみてください

procedure TMyDM.DoOnResult(Res: olevariant);
var
 ans: array of string;
begin
 if not VarIsNull(Res) then 
 if not VarIsNull(Res.GetAns) then
 begin
  ans := Res.GetAns;
  //do your stuff

 end;

end;
于 2010-07-28T03:06:07.173 に答える