首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi 中这样的集合操作怎么进行

2013-12-19 
Delphi 中这样的集合操作如何进行?typeTSet(a200,b201,c202,d203,e204)TSetsset of TSetvart:TSe

Delphi 中这样的集合操作如何进行?
type
   TSet=(a=200,b=201,c=202,d=203,e=204);
   TSets=set of TSet;
var
  t:TSets;
begin
  t :=[c,e,b];
  //现在要求如下操作
  //1、获取t集合中有几个元素,上例中也就是有三个,如何操作?
  //2、如何获取t集合中值是第二大的元素,上例中值是第二大的元素是c,如何操作?
  //   也就是说为t集合中所有的元素做个排序,然后取第二大的元素。
end;
[解决办法]
2.Set的目的不在于此

你想达到的效果,应该用其他的方法。
比较笨但简单的方法是,将其转换成string,保存在stringlist中,它可以sort。

一般会用什么quicksort之类的共用类来实现。
[解决办法]
procedure TForm1.SpeedButton1Click(Sender: TObject);
type
  TSet = (a = 200, b = 201, c = 202, d = 203, e = 204);
  TSets = set of TSet;
var
  t: TSets;
  i : TSet;
  count : Integer;
begin
  t := [c, e, b];

  Count := 0;
  for i := High(TSet) downto Low(TSet) do
  begin
    if i in t then
    begin
      Inc(Count);

    end;
  end;
  //Count就是元素个数.
  //循环是从Hight到Low.最大,第二大你也该知道怎么获取了吧.
end;

热点排行