Nous avons un code quelque chose comme ça (Delphi 6 RTL Update Pack 3):La fonte dangereuse dans delphi donne parfois un néant seulement sur certaines machines?
objChild1 := TChild1.create();
... (Some Code)
objProcessor.function1(objChild1);
Tchild1 est héritée de TGrandPa par 2 + niveaux de la hiérarchie.
function1 est défini comme celui-ci où objChildData est une variable privée de classe TProcessor et est de type TChild1:
TProcessor.function1(objTemp : TGrandPa):boolean;
begin
objChildData := TChild1(objTemp);
....
end;
A partir des journaux (puisque nous ne pouvons pas déboguer sur une machine client), nous avons réduit bas que la première ligne de la fonction1 rend objChildData parfois et seulement sur les machines d'un client particulier. Reste des endroits où le même code est déployé semble fonctionner parfaitement bien.
Quelqu'un peut-il expliquer pourquoi cela se produit et/ou comment résoudre ce problème?
Probablement lorsque TChild1 (objTemp) est nul, alors objTemp est nul. Essayez de consigner 'objTemp.ClassName' trop – ulrichb
Le problème n'est pas lié à la conversion sécurisée ou non sûre, mais à l'hypothèse incorrecte que Create retournera toujours un objet. En fait, lorsque Create échoue, il renvoie zéro. Vous devez déboguer votre constructeur 'TChild1.Create'. –