次のようなコードがあります (Delphi 6 RTL Update Pack 3):
objChild1 := TChild1.create();
... (Some Code)
objProcessor.function1(objChild1);
Tchild1 は TGrandPa から 2 + 階層レベルまで継承されます。
function1 は次のように定義されます。ここで、objChildData は TProcessor クラスのプライベート変数であり、タイプ TChild1 です。
TProcessor.function1(objTemp : TGrandPa):boolean;
begin
objChildData := TChild1(objTemp);
....
end;
ログから (顧客のマシンでデバッグできないため)、function1 の最初の行が objChildData を nil にすることがあり、特定の顧客のマシンでのみ発生することを絞り込みました。同じコードが展開されている残りの場所は、完全に正常に機能しているようです。
なぜこれが起こっているのか、および/またはこれを解決する方法について、誰かが光を当てることができますか?