加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

arrays – 默认值创建一个TDictionary的常量数组

发布时间:2020-12-15 09:49:17 所属栏目:大数据 来源:网络整理
导读:我想在Delphi项目中使用TDictionary.但我有一个问题,我怎么能默认值创建一个常量的TDictionary数组? 例如,我想为字典分配4项,如波纹管代码(对于TItem的常量数组): ...type TItem = record _Key: string; _Value: string; end;var Dic: array [0..3]of TIte
我想在Delphi项目中使用TDictionary.但我有一个问题,我怎么能默认值创建一个常量的TDictionary数组?

例如,我想为字典分配4项,如波纹管代码(对于TItem的常量数组):

...
type
  TItem = record
    _Key: string;
    _Value: string;
  end;
var
  Dic: array [0..3]of TItem=(
  (_Key:'A' ; _Value:'Apple'),(_Key:'B' ; _Value:'Book'),(_Key:'C' ; _Value:'C++'),(_Key:'D' ; _Value:'Delphi')
  );
...

有没有办法用TDictionary做这个工作?
我想创建一个Dic(但)的常量数组,如波纹管结构.

...
    var
      Dic: TDictionary<string,string>;
    begin
      Dic := TDictionary<string,string>.Create;
      try
        Dic.Add('A','Apple');
        Dic.Add('B','Book');
        Dic.Add('C','C++');
        Dic.Add('D','Delphi');
      finally
         ///
      end;
    ...

有人对我有什么建议吗?
(对不起,如果我的英语很差!)

解决方法

您不能编写作为类实例的常量表达式.

但是,由于你的TDictionary是String的集合,你可以用它创建常量,你可以在运行时从你的常量构建你的TDictionary.您可以在问题中使用记录,但我喜欢数组:

{$IFDEF WHATEVER}
type
  TDictConstant = array[0..3,0..1] of String;
const
  DICT_CONSTANT: TDictConstant = (('A','Apple'),('B','Book'),('C','C++'),('D','Delphi'));
{$ELSE}
// If you want it "blank" for one config
type
  TDictConstant = array[0..0,0..1] of String;
const
  DICT_CONSTANT: TDictConstant = (('',''));
{$ENDIF}
var
  Dic: TDictionary<string,string>;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Dic := TDictionary<string,string>.Create;
  for i := 0 to High(DICT_CONSTANT) do
  begin
    // Ignore the "blank" ones
    if (DICT_CONSTANT[i][0] <> '') or (DICT_CONSTANT[i][1] <> '') then
    begin
      Dic.Add(DICT_CONSTANT[i][0],DICT_CONSTANT[i][1]);
    end;
  end;
end;

我过去做过类似的事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读