Delphi, olevariants и массивы строк - PullRequest
0 голосов
/ 28 июля 2010

У меня есть объект 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) , но он по-прежнему не работает, если результат нулевой

Как правильно проверить правильность результата?

ps я не могу контролировать объект ole

1 Ответ

5 голосов
/ 28 июля 2010

Кристофер, попробуйте использовать функцию 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;
...