Hallo,
wieso, weshalb, warum spielt hier doch keinerlei Rolle. Tatsache ist, der Code existiert so. Ich kann ihn nicht posten, weil es ein riesiges Projekt ist, und ich auch nicht weiß, wo dieser .Instance-Eigenschaft etwas zugewiesen wird (wo schon, aber da wird wieder ein Parameter übergeben, das ganze zigmal durchlaufen und nur einmal kommt ein Fehler).
Also: ich habe bei der Erzeugung des Objektes, von dem .Instance eine Eigenschaft ist, diese initialisiert mit NIL. Guter Einwurf, ändert aber nichts. Nur um alles auszuschließen: die Abfrage mit "is nil" geht doch sowieso nicht, es muß doch "= nil" oder "Assigned()" heißen?
Zur Veranschaulichung doch noch ein wenig Code:
Bei der Deklaration der Row-Klasse:
Delphi-Quellcode:
public
Instance: TObject;
Bei der Erzeugung:
constructor TRow.Create;
begin
[...]
Instance := NIL;
end;
In einer anderen Klasse dann:
if (not (Row.Instance is TclsAIArticleItem)) ... // Fehler
Also: .Instance ist nicht NIL, ist aber auch kein Objekt der Klasse oder einer abgeleiteten Klasse, die abgefragt wird (deshalb der Compilerfehler), sondern es zeigt irgendwohin. Es wird aber auch offenbar nirgends ein Objekt einer anderen Klasse zugewiesen. Row.ClassName geht auch nicht! Verdammt!
[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]