8

phpを使用している場合は、プログラミングlangでphpに連想配列(または配列幅の文字列キー)があることがわかります。例えば:

$server['hostname']  =  'localhost';
$server['database']  =  'test';
$server['username']  =  'root';
$server['password']  =  'password' ;    

// 2d array
$all['myserver']['hostname'] = 'localhost' ;

しかし、delphiで連想配列を使用するデフォルトの方法を見つけることができません。

まず、出力コンポーネントやクラスを使用せずにデフォルトの方法を見つけたいと思います。次に、実際に内部的な方法で見つけることができない場合は、出力クラスのみを強制的に選択します。

私はDelphiXE3を使用しています、あなたの助けに感謝します。

編集:私はここで1つのクラスを見つけました:http://www.delphipages.com/forum/showthread.php?t=26334 phpと同じですが、もっと良い方法はありますか?

4

4 に答える 4

19

TDictionary<string,string>本体からご利用いただけますGenerics.Collections

var
  Dict: TDictionary<string,string>;
  myValue: string;
....
Dict := TDictionary<string,string>.Create;
try
  Dict.Add('hostname', 'localhost');
  Dict.Add('database', 'test');
  //etc.
  myValue := Dict['hostname'];
finally
  Dict.Free;
end;

などなど。

辞書を含む辞書が必要な場合は、を使用できますTDictionary<string, TDictionary<string,string>>

ただし、これを行う場合は、外部ディクショナリに含まれるディクショナリ アイテムの有効期間にわたって特別な注意を払う必要があります。を使用TObjectDictionary<K,V>して、それを管理することができます。これらのオブジェクトの 1 つを次のように作成します。

TObjectDictionary<string, TDictionary<string,string>>.Create([doOwnsValues]);

これは、に設定さTObjectDictionary<k,V>れた従来の was と同じように動作します。TObjectListOwnsObjectsTrue

于 2012-12-07T15:04:01.067 に答える
14

この目的で tStrings と tStringList を使用できますが、2 次元配列はこれらのコンポーネントの範囲外です。

使用法;

var
  names  : TStrings;
begin
  ...
  names := TStringList.Create;
  ...
  ...
  names.values['ABC'] := 'VALUE of ABC' ;
  ...
  ...
end ;
于 2012-12-07T15:06:45.290 に答える
0

私はその簡単な方法で問題を解決しました(例):

uses StrUtils;

...

const const_TypesChar : array [0..4] of String =
    (
      'I',
      'F',
      'D',
      'S',
      'B'
    );
const const_TypesStr : array [0..4] of String =
    (
      'Integer',
      'Float',
      'Datetime',
      'String',
      'Boolean'
    );

...

Value := const_TypesStr[ AnsiIndexStr('S', const_TypesChar) ];

// As an example, after execution of this code Value variable will have 'String' value.

//

次に、プログラムでは、const_TypesCharconst_TypesStrの 2 つの配列を、 AnsiIndexStr関数を使用して 1 つの連想配列として使用しています。

利点は、単純であり、配列に要素を追加するたびにプログラム内のさまざまな場所でコードを変更する必要がないことです。

于 2016-05-05T11:49:11.547 に答える