在 Delphi 2009 中, for in 循环都能用在什么地方?


一、遍历 TStrings

var

  List: TStrings;

  s: string;

begin

  List := TStringList.Create;

  List.CommaText := 'aaa,bbb,ccc';



  for s in List do

    ShowMessage(s);



  List.Free;

end;


 
   

二、遍历数组

var

  Arr: array[0..2] of Byte;

  i: Integer;

  b: Byte;

begin

  for i := Low(Arr) to High(Arr) do

    Arr[i] := Random(MAXBYTE);



  for b in Arr do

    ShowMessage(IntToStr(b));

end;


 
   

三、遍历子界

{例1}

var

  sub: 0..9;

  str: string;

begin

  str := '';

  for sub in [Low(sub)..High(sub)] do

    str := str + IntToStr(sub); 



  ShowMessage(str); {0123456789}

end;



{例2}

type

  TSub = 'A'..'G';

var

  sub: TSub;

  str: string;

begin

  str := '';

  for sub in [Low(sub)..High(sub)] do

    str := str + sub; 



  ShowMessage(str); {ABCDEFG}

end;



{例3}

var

  sub: Byte; {Byte 应该算是个 0..255 的子界}

  num: Cardinal;

begin

  num := 0;

  for sub in [Low(sub)..High(sub)] do

    Inc(num, sub); 



  ShowMessage(IntToStr(num)); {32640}

end;


 
   

四、遍历枚举

type

  TEnum = (Red,Green,Blue);

var

  enum: TEnum;

  count: Integer;

begin

  count := 0;

  for enum in [Low(enum)..High(enum)] do

    Inc(count);



  ShowMessage(IntToStr(count)); {3}

end;


 
   

五、遍历集合

type

  TEnum = (Red,Green,Blue,Yellow);

  TSet = set of TEnum;

var

  set1: set of TEnum;

  set2: TSet;

  elem: Tenum;

  count: Integer;

begin

  set1 := [Red, Yellow];

  count := 0;

  for elem in set1 do Inc(count);

  ShowMessage(IntToStr(count)); {2}



  set2 := [Red..Yellow];

  count := 0;

  for elem in set2 do Inc(count);

  ShowMessage(IntToStr(count)); {4}

end;


 
   

六、遍历字符串

var

  str: string;

  c: Char;

begin

  str := 'ABCD';

  for c in str do 

    ShowMessage(c);

end;


 
   

上面是我能够想到的, 还有吗? 帮我想想.

你可能感兴趣的:(Delphi)