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做这个工作? ... 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; 我过去做过类似的事情. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |