由于某种原因,我使用了指针传递对象procedure AddListItem(sl:Pointer);
begin
  if not (TObject(sl) is TStrings) then Exit; //这句话有问题
  TStrings(sl).Add('asdfasdfasdf');
end;当我调用  AddListItem(Memo1.Lines);
是总是执行不到
TStrings(sl).Add('asdfasdfasdf');
怎么才能判断呢?
TObject(sl).ClassName = 'TMemoStrings';

解决方案 »

  1.   

    问题我解决了function IsAncestor(p:Pointer; c:TClass): Boolean;
    var
      ClassRef: TClass;
    begin
      Result:= False;
      ClassRef:= TObject(p).ClassType;
      while ClassRef.ClassParent <> nil do begin
        MessageBox(0,PChar(string(ClassRef.ClassParent.ClassName)),nil,0);
        if ClassRef.ClassParent.ClassName = c.ClassName then begin
          Result:= True;
          Exit;
        end;
        ClassRef:= ClassRef.ClassParent;
      end;
    end; 
      

  2.   

    TO:  wilowind(无风雪亦飘) ClassParent并不能彻底解决问题,不过从你的回复中我知道,你有长进了。
      

  3.   

    晕!大家使用时记得把那句 MessageBox去掉!