枚举集合如何转换成Integer类型?请高手赐教。 ( 积分: 100 )

  • 主题发起人 主题发起人 zjjzl
  • 开始时间 开始时间
Z

zjjzl

Unregistered / Unconfirmed
GUEST, unregistred user!
不是特定的枚举集合,有没有通用的转换方法?
可惜delphi不支持模板,不然倒是很容易解决。
最终的问题是:集合有没有基集合
 
不是特定的枚举集合,有没有通用的转换方法?
可惜delphi不支持模板,不然倒是很容易解决。
最终的问题是:集合有没有基集合
 
参考 http://www.delphibbs.com/delphibbs/dispq.asp?LID=3052651
 
特定集合可以特定处理,这个很容易,有没有通用的方法?
 
TEnum = (A, B, C)
Ord(A) = 0
Ord(B) = 1
Ord(C) = 2
也许楼主问的不是这个
 
另外上面
TEnum(1) = A
TEnum(2) = B
TEnum(3) = C
 
那个不就是针对集合的通用处理方法吗?
function GetSetElementCount(const S
Size: Integer): Integer;
函数中并没有任何针对特定集合的代码,只不过其中是将集合变量的值以字节数组的形式访问罢啦
 
谢谢lichengbin,
看起来有点意思,这样看来delphi中集合的存储结构应该是位串,1-存在,0-不存在,是这样吗?不知有没有官方的说明?
 
集合就是个有序的序列,ord返回的就是在序列中的位置。。。。所以你可以使用ord(D)来返回D的Ascii码,因为Ascii也是有顺序的,其他集合也都这个原理。。。
 
你这么有兴趣,那仔细研究研究System单元的下列函数吧[:D]
procedure _SetElem;
procedure _SetRange;
procedure _SetEq;
procedure _SetLe;
procedure _SetIntersect;
procedure _SetIntersect3
{ BEG only }
procedure _SetUnion;
procedure _SetUnion3
{ BEG only }
procedure _SetSub;
procedure _SetSub3
{ BEG only }
procedure _SetExpand;
 
set of 的确是bit串.你察看对set of 进行操作的 + - include 的代码就可以看到了
 
TEnum = (A, B, C)
arr:array[Tenum] of integer;
arr[A];
arr;
arr[C];
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
724
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部