2011-11-22 21 views
6

Böyle bir şey yapmaya çalışıyorum:Bir TClass'ın bir diğerinden türetilmiş olduğunu nasıl anlarım?

Bu hatayı üretir
function CreateIfForm (const nClass : TClass) : TForm; 
begin 
    if not (nClass is TFormClass) then 
    raise Exception.Create('Not a form class'); 
    Result := (nClass as TFormClass).Create(Application); 
end; 

"Bu işlenen türü için geçerli değil Operatör". Senin sadece bir form sınıfı kabul etmek işlevini değiştirebilir olmadığını kontrol etmelidir

+0

cevaplar ;-) – TLama

cevap

17

Birinci Delphi 7. kullanıyorum:

function CreateIfForm(const nClass: TFormClass): TForm; 

ve tip kontrolü ve döküm ihtiyacını atlar. Bu çekilse değilse

, sen InheritsFrom kullanabilirsiniz:

function CreateIfForm(const nClass: TClass): TForm; 
begin 
    if not nClass.InheritsFrom(TForm) then 
    raise Exception.Create('Not a form class'); 
    Result := TFormClass(nClass).Create(Application); 
end; 
+0

InheritsFrom kabul unutmayın! Evet, tam da aradığım şey bu. Teşekkürler –

+0

@Ulrich - İkinci cevabınız gerçekten doğru olanıdır: İşlev hiçbir zaman bir form olmayan bir sınıfı kabul etmemelidir. –

+0

@Nick, sağ tarafınız. Bunu daha iyi yansıtmak için cevabımı yeniden söyledim. –

İlgili konular