2010-07-28 19 views
0

i ont un objet ole créé avec (verion simples)Delphi, OleVariants et tableaux de chaînes

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

procedure TMyDM.DoOnResult(Res: olevariant); 

que tous les travaux, la variable res a une fonction String [] GetAns() qui im ​​appeler comme celui-ci

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

qui fonctionne à nouveau .. sauf parfois pas tableau est retourné, puis une exception est levée.

comme une solution temporaire je l'ai enveloppé dans un essai vide sauf bloc, que je sais est mauvais. J'ai essayé VarIsArray (Res.GetAns) mais il fonctionne toujours donst si le résultat est nul

Quelle est la vérification de la bonne façon pour le bon résultat?

ps Je n'ai aucun contrôle sur l'objet ole

Répondre

5

Christopher essayez d'utiliser la fonction 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; 
+0

Merci Je jetai un regard sur que l'on ne pensait même pas à deux fois pour une raison quelconque. Semble fonctionner au besoin :) –