【发布时间】:2016-02-10 13:07:14
【问题描述】:
TDictionary 中是否可以存储多个项目?我想要一个简单的下一个解决方案
我的桌子是这样的:
- LOCATION_ID、城市、邮政编码
- 1,英格兰,2000
- 2,匈牙利,1000
- 3 , 土耳其, 300
- 4 , 德国, 5000 等等...
我想存储表中的所有字段,并在其中搜索项目之后.. TDictionary 有能力吗?我有一个悖论表,Query 是一个简单的 TQuery
我用 2 个字段做了一个小例子
var
stSearch: string;
vPDX: TDictionary<String, TCity>;
variable: string;
stSearch := '4';
vPDX := TDictionary<String, String>.Create; qry_TMP.DatabaseName := 'C:\S_DATABASE';
qry_TMP.SQL.Text := 'select * from SAMPLE_TABLE';
qry_TMP.Open;
while not qry_TMP.Eof do
begin
vPDX.AddOrSetValue(qry_TMP.FieldByName('LOCATION_ID').AsString, qry_TMP.FieldByName('Location').AsString);
qry_TMP.Next;
end;
if vPDX.TryGetValue(stSearch, variable) then
showmessage(variable);
此代码有效,但我还需要另一个字段 (ZIP_CODE)。
我在 Class 中尝试过,但我只得到了 Table 中的最后一项。
TSampleClass = class
ZIP_CODe: String;
Location: String;
end;
var
SampleClass, Value: TSampleClass;
vPDX := TDictionary<String, TSampleClass>.Create;
begin
stSearch := '4';
SampleClass := TSampleClass.Create;
vPDX := TDictionary<String, TSampleClass>.Create;
qry_TMP.DatabaseName := 'C:\S_DATABASE';
qry_TMP.SQL.Text := 'select * from SAMPLE_TABLE';
qry_TMP.Open;
while not qry_TMP.Eof do
begin
vPDX.AddOrSetValue(qry_TMP.FieldByName('LOCATION_ID').AsString, SampleClass);
SampleClass.ZIP_CODE := Qry_TMP.FieldByName('ZIP_CODE').AsString;
SampleClass.City := Qry_TMP.FieldByName('City').AsString;
qry_TMP.Next;
end;
if vPDX.TryGetValue(stSearch, SampleClass) then
showmessage(SampleClass.ZIP_CODE + SampleClass.City);
任何人都可以帮助解决什么问题?我想要德国和 5000 ZIP_CODE。我想学习如何使用 TDictionary。感谢您的帮助!
【问题讨论】:
标签: delphi delphi-xe delphi-xe7