CBuilder中的“IS”运算符Delphi

时间:2016-03-11 12:09:35

标签: delphi c++builder

在Delphi中,我编写了以下代码来识别Graphic是TBitmap:

if aImage.Picture.Graphic is TBitmap then 
  ...

在C ++ Builder中,我编写了以下代码:

if (dynamic_cast<Image1->Picture->Graphic>(TBitmap) != 0) 
    ....

但它不起作用。 C ++ Builder如何在Delphi中完成相同的检查?

1 个答案:

答案 0 :(得分:4)

您的代码应为

if (dynamic_cast<TBitmap*>(Image1->Picture->Graphic) != 0) 
    ....

if (dynamic_cast<TBitmap*>(Image1->Picture->Graphic) != nullptr) 
    ....

if (dynamic_cast<TBitmap*>(Image1->Picture->Graphic)) 
    ....

TBitmap* bitmap = dynamic_cast<TBitmap*>(Image1->Picture->Graphic);
if (bitmap)
{
    .... 
    // do stuff with bitmap
}

这些都是等价的,您可以根据自己的喜好选择。

此处记录了dynamic_cast运算符:http://docwiki.embarcadero.com/RADStudio/en/Dynamic_cast_(C%2B%2B_Type_Cast_Operator)