美文网首页
2021-11-28 Delphi新语法 For ..In 循环

2021-11-28 Delphi新语法 For ..In 循环

作者: netppp | 来源:发表于2021-11-30 16:24 被阅读0次

    https://www.cnblogs.com/del/archive/2008/11/12/1332011.html
    https://www.cnblogs.com/findumars/p/9362036.html

    首先我们要知道哪些类型可以用For In吧,下面就是:
    for Element in ArrayExpr do Stmt; 数组
    for Element in StringExpr do Stmt; 字符串
    for Element in SetExpr do Stmt; 集合
    for Element in CollectionExpr do Stmt; 集合
    for Element in Record do Stmt; 结构体

    一、遍历 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:string; //c: Char;
    begin
    str := 'ABCD';
    for c in str do
    ShowMessage(c);
    end;

    相关文章

      网友评论

          本文标题:2021-11-28 Delphi新语法 For ..In 循环

          本文链接:https://www.haomeiwen.com/subject/nnzcxrtx.html