【问题标题】:Enumerations in Delphi with custom valuesDelphi 中具有自定义值的枚举
【发布时间】:2011-04-08 15:58:36
【问题描述】:

可以像这样在 Delphi 5 中用自定义值声明枚举吗?:

type
  MyEnum = (meVal1 = 1, meVal2 = 3); // compiler error

谢谢!

【问题讨论】:

    标签: delphi enums delphi-5


    【解决方案1】:

    根据article,这是合法的。我记得在早期版本的 Delphi 中不支持提供值。

    提供您收到的“编译器错误”可能会有所帮助。另外,您使用的是什么版本的 Delphi?

    【讨论】:

    【解决方案2】:

    如果您有旧版本的 Delphi (

    const
      meVal1 = 1;
      meVal2 = 3;
    
    type
      TMyEnum = Byte; // or Integer or ... - depends on your needs.
    

    不幸的是,编译器无法像使用 enum 类型那样为您做更多的错误检查。

    【讨论】:

      【解决方案3】:

      作为对 Ulrich 答案的一个有点丑陋的扩展,您可以执行以下操作:

      type
        TMyEnum = (meVal1, meVal2);
      
      const
        MY_ENUM_VALS: array[TMyENum] of integer = (1, 3);
      

      并以如下方式访问它们

      if (aVal = MY_ENUM_VALS[meVal2]) then...
      

      不漂亮,我承认你,但至少这样你可以对那些早期版本的 Delphi 进行更多的编译器错误检查。

      【讨论】:

        【解决方案4】:

        在较旧的 Delphis 中,您可以这样做

        type
          MyEnum = (meUnused1, meVal1, meUnused2, meVal2);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-14
          • 2019-07-18
          • 2017-04-02
          相关资源
          最近更新 更多