如何检查枚举是否等于几个不同的值?

时间:2017-01-13 08:57:19

标签: delphi enums

Data.DB单元中,声明了以下枚举:

TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ...)

我需要确定搜索网格中字段的DataType是否为整数,字符串,浮点数,日期,blob等。

整数应该是可以用作整数的任何类型,例如ftSmallintftIntegerftWord等。

这样做的方法比以下更短吗?

if (Field.DataType = ftInteger) or (Field.DataType = ftSmallint) or (Field.DataType = ftWord) then Result := ftInteger;

2 个答案:

答案 0 :(得分:3)

你可以这样做

if Field.DataType in [ftInteger, ftSmallInt, ftWord] then ...

此外,您可以将集类型定义为set of TFieldType,并使用该类型的变量来存储您要查找的字段类型,然后在其上使用if Field.DataType in ...

答案 1 :(得分:1)

case Field.DataType of
        ftUnknown, ftVariant   : Result:= ftVariant;
        ftWideString, ftString : Result:= ftString;
        ftAutoInc, ftLargeint,ftWord, ftInteger, ftSmallint  : Result:= ftInteger;
        ftBoolean              : Result:= ftBoolean;
        ftFMTBcd               : Result:= ftFMTBcd;
        ftBCD                  : Result:= ftBCD;
        ftFloat, ftCurrency    : Result:= ftFloat;
        ftTime, ftDateTime, ftDate: Result:= ftDateTime;
        ftGraphic, ftBlob, ftMemo, ftFmtMemo: Result:= ftBlob;
      end;