Declaration
constructor Create(buckets: Cardinal; hashFunction: TIEStrHashFunction; caseSensitive: Boolean = False); overload;
constructor Create(buckets: Cardinal = 103; caseSensitive: Boolean = False); overload;
Description
Creates a new instance of TIEDictionary.
Examples
// Dump dictionary content as XML
var
dict: TIEDictionary;
begin
dict := TIEDictionary.Create();
dict.Insert('doublekey', 10.1);
dict.Insert('integerkey', 100);
dict.Insert('stringkey', 'hello');
dict.Insert('bool_true', True);
dict.Insert('bool_false', False);
dict.Insert('dict', TIEDictionary.Create());
dict.GetDictionary('dict').Insert('one', 1);
dict.GetDictionary('dict').Insert('two', 'two');
dict.Insert('list', TObjectList.Create());
dict.GetList('list').Add( TIEDictionaryValueWideString.Create('mike') );
dict.GetList('list').Add( TIEDictionaryValueWideString.Create('robert') );
dict.GetList('list').Add( TIEDictionaryValueWideString.Create('john') );
dict.GetList('list').Add( TIEDictionaryValueInteger.Create(2013) );
Memo1.Text := dict.Dump(ieplXML);
dict.Free();
end;
// Dump structure
dict := TIEDictionary.Create();
dict.Parse('{"string" : "string content", "myinteger": 1234, "mydouble": 123.456, "a_bool_true" : true, "a_bool_false" : false, "subdict" : {"name": "john", "surname" : "mad"}, "array": [1,2,3,4,"hello", {}, {"alfa":"beta"}, [9,10]] }');
Memo1.Text := dict.Dump(ieplStructure);
dict.Free();
// Parse all DictionaryEntries from XML file
// Download file from: www.imageen.com/files/UnitTestFiles/XML_TEST.xml
{
SAMPLE:
<?xml version="1.0" encoding="UTF-8"?>
<Proofreader>
<Rules Language="EN">
<DictionaryEntries>
<Entry>absolute</Entry>
<Entry>add</Entry>
<Entry>ancestor</Entry>
<Entry>anchor</Entry>
<Entry>begin</Entry>
...
OUTPUT:
absolute
add
ancestor
anchor
begin
...
}
var
ss: TStringList;
xmlDict: TIEDictionary; // Dict to parse source XML
navDict: TIEDictionary; // Dict to navigate XML structure
list: TObjectList;
i: Integer;
begin
ss := TStringList.Create();
xmlDict := TIEDictionary.Create();
ss.LoadFromFile('D:\XML_TEST.xml');
xmlDict.parse( ss.Text );
// Output all entries of Proofreader->Rules->DictionaryEntries into "Memo1"
navDict := xmlDict.GetDictionary('Proofreader', False);
navDict := navDict.GetDictionary('#content', False);
navDict := TIEDictionary(navDict.GetList('Rules', False)[0]);
navDict := navDict.GetDictionary('#content', False);
navDict := navDict.GetDictionary('DictionaryEntries', False);
navDict := navDict.GetDictionary('#content', False);
list := navDict.GetList('Entry', False);
for i := 0 to list.Count - 1 do
begin
navDict := TIEDictionary(list[i]).GetDictionary('#content', False);
Memo1.Lines.Add( navDict.GetString('#text', False) );
end;
xmlDict.Free();
ss.Free();
end;