gpt4 book ai didi

delphi - 如何实现类型安全的 COM 枚举?

转载 作者:行者123 更新时间:2023-12-03 18:12:58 24 4
gpt4 key购买 nike

我如何在 COM 场景中在 Delphi 中实现类型安全枚举?基本上,我想用一组封装在类中的静态最终对象引用替换枚举的一组原始常量? .在 Java 中,我们可以这样做:

public final class Enum
{
public static final Enum ENUMITEM1 = new Enum ();
public static final Enum ENUMITEM2 = new Enum ();
//...
private Enum () {}
}

并使用自定义的枚举类型进行比较:

if (anObject != Enum.ENUMITEM1) ...

我目前正在使用旧的 Delphi 5,我想在接口(interface)上声明一些枚举参数,不允许客户端对象传递整数(或长)类型来代替所需的枚举类型。除了使用 native delphi 枚举之外,您是否有更好的实现枚举的方法?

最佳答案

native Delphi 枚举已经是类型安全的。 Java 枚举是该语言的一项创新,因为在此之前它根本没有枚举。但是,也许您指的是不同的功能 - 以类型名称为前缀的枚举值。

即将推出的 Delphi 2009 和 Delphi for .NET 产品的最新版本支持称为范围枚举的新指令。它看起来像这样:

{$APPTYPE CONSOLE}
{$SCOPEDENUMS ON}
type
TFoo = (One, Two, Three);
{$SCOPEDENUMS OFF}

var
x: TFoo;
begin
x := TFoo.One;
if not (x in [TFoo.Two, TFoo.Three]) then
Writeln('OK');
end.

关于delphi - 如何实现类型安全的 COM 枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com