zoukankan      html  css  js  c++  java
  • 集合 数据 指针方法操作集合

    uses TypInfo;
    type
      TCommType = (cEm, cDm, cMd);
     
      TCommTypeCon = class
      public
        class function CommToStr(nComm: TCommType): string;
        class function StrToComm(const nStrComm: string): TCommType;
      end;
     
    implementation
     
    class function TCommTypeCon.CommToStr(nComm: TCommType): string;
    begin
      Result := GetEnumName(TypeInfo(TCommType), Ord(nComm));
    end;
     
    class function TCommTypeCon.StrToComm(const nStrComm: string): TCommType;
    begin
      Result := TCommType(GetEnumValue(TypeInfo(TCommType), nStrComm));
    end;
    
    ````
    集合和字符串互转
    
     集合:
    type
    TSocketState = (ssDisconnecting, ssDisconnected, ssConnected, ssConnecting, ssListening, ssAccepting);
    
    const
    TSocketStateCaption: array[TSocketState] of String = ('正在断开', '已经断开', '已经连接', '正在连接', '正在侦听', '正在接入');
    
     
    type
      TCommandType = (ctEmptyCommand, ctAdd, ctModify);
    
      TCommandTypeConvert = class
      public
        class function CommandToString(ACommand: TCommandType): string;
        class function StringToCommand(const AStrCommand: string): TCommandType;
      end;
    
    implementation
    
    class function TCommandTypeConvert.CommandToString
      (ACommand: TCommandType): string;
    begin
      Result := GetEnumName(TypeInfo(TCommandType), Ord(ACommand));
    end;
    
    class function TCommandTypeConvert.StringToCommand(const AStrCommand: string)
      : TCommandType;
    begin
      Result := TCommandType(GetEnumValue(TypeInfo(TCommandType), AStrCommand));
    end;
    View Code
    调用方法:
    str:=GetEnumName(TypeInfo(TSocketState),Ord(lvClient.SocketState));
    转载于:https://www.cnblogs.com/stroll/p/7988434.html
    ````
    
    在 delphi 里,提供了一个 TypeInfo 单元,用于运行期获取变量、结构的信息数据。
    试编写代码示例如下:
    集合定义:
    type
      TWeekDays = (星期一,星期二,星期三,星期四,星期五,星期六,星期日);
      TDays = set of TWeekDays;
    集合转换成字符串:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     ti: PTypeInfo;
     td: PTypeData;
     i: Integer;
    begin
     ti := TypeInfo(TWeekDays);
     td := GetTypeData(ti);
     for i := td^.MinValue to td^.MaxValue do
       Memo1.Lines.Add(GetEnumName(ti, i));
    end;
    https://zhidao.baidu.com/question/138947005851490125.html
    
    ````
    var
      sd: set of 1..9;
      t: set of 1..60;
    begin
      sd := [];           // sd = []
      sd := [1,2];        // sd = [1,2]
      sd := sd + [15];    // sd = [1,2,15] 按照定义,sd应该为1到9的值,
                          //  15应该不能加进来,但实际能加进去,使用 Include(sd, 15)也是一样
      sd := sd + [16];    // sd = [1,2,15] 发现大于16的数字无法添加进集合内
      sd := sd + [25];    // sd = [1,2,15]
      sd := [];
      showmessage(inttostr(sizeof(sd)));     // 输出 2
      showmessage(inttostr(sizeof(t)));      // 输出 8
    end;
     showmessage(inttostr(PWord(@sd)^))
    PWord(@sd)^  := 106;
    https://www.cnblogs.com/tangqs/p/3264821.html
    ````
    https://www.cnblogs.com/del/archive/2007/11/30/978683.html
    https://www.cnblogs.com/del/archive/2007/11/30/978673.html
    https://www.cnblogs.com/del/archive/2007/11/30/978672.html
  • 相关阅读:
    FZU Problem 2150 Fire Game
    HTTP协议认识
    GitHub
    设计模式学习笔记(一)——面向对象设计模式与原则
    信息安全系统设计基础第九周学习总结
    信息安全系统设计基础第八周期中总结
    家庭作业二
    信息安全系统设计基础第七周学习总结
    家庭作业
    信息安全系统设计基础第六周学习总结
  • 原文地址:https://www.cnblogs.com/marklove/p/14805070.html
Copyright © 2011-2022 走看看