2017-12-31 180 views
0

私はこのどのようなコレクションを使用しますか?デルファイ

TDictionary<tkey, tfirstvalue,tsecondvalue>; 
+0

もこれを読んで? –

+0

はc#netfram 4で使用されていますが、私はdelphiで欲しい –

+1

キーの値としてdynarrayを使うのはどうですか?または2つの値を持つレコード?それから、 'TDictionary 'のようになります。これは実行可能でなければなりません。値の型として "TPair "を使用してください(どちらにしても2種類のレコードに相当します)。 –

答えて

2

のようないくつかのものは、レコードのような化合物の構造に自分の価値観を置き、Delphiで二つの値のための1つのキーを使用します。次に、そのレコードタイプを辞書値タイプとして使用します。

1

デルファイはタプル型ではありません。 あなたの目的はわかりませんが、レコードタイプヘルプの動的配列があります。

Type 
Tdict_ = reocord 
tkey:integer; 
tfirstvalue,Tsecondvalue :string; 
end; 
var 
Tdict:array of tdict_ 
... 
procedure adddata(Tkey:integer;tfirstvalue:string;Tsecondvalue :string); 
begin 
    setlength(tdict,length(tdict)+1); 
    tdict[length(tdict)-1].tkey:=tkey; 
    tdict[length(tdict)-1].tfirstvalue:=tfirstvalue; 
    tdict[length(tdict)-1].tsecondtvalue:=tsecondvalue;  
end; 

ただし、配列の返り値のインデックスには独自の「find」関数を記述する必要があります。キーが文字列である場合

は例

Function find(tkey:integer):integer; 
    var i:Integer; 
    begin 
    for i:=0 to length(Tdict)-1 do 
    if tdict[i].tkey=i then 
     begin 
     result:=i; 
     break; 
     end; 
    end; 

    Function deletecalue(tkey:integer):integer; 
    var i,j:Integer; 
    begin 
    i:=find(tkey) 
     for j:=i to length(Tdict)-2 do 
      tdict[j]:=tdict[j+1]; 
     setlength(tdict,length(tdict)-1); 

    end; 

のためにタイプを変更しなければならないが、それは巨大な日のために遅くなります。キーとしてタプルを使用してからあなたを停止する何 https://github.com/malcolmgroves/generics.tuples

+0

verry matchありがとう –

関連する問題