Difference between revisions of "User:Nhollm"
From Lazarus wiki
Jump to navigationJump to searchLine 32: | Line 32: | ||
===Add=== | ===Add=== | ||
− | Add | + | Add Entry or update its current value (key, value) |
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
MyDictionary.AddOrSetValue('Key1', 'Value1'); | MyDictionary.AddOrSetValue('Key1', 'Value1'); | ||
Line 49: | Line 49: | ||
===Get Value=== | ===Get Value=== | ||
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
− | + | WriteLn(MyDictionary.Items['Key1']); | |
</syntaxhighlight> | </syntaxhighlight> | ||
− | If the provided key does not exist, this will throw | + | If the provided key does not exist, this will throw an Error :'Dictionary Key does not Exist'. You can use 'TryGetValue' instead. |
===Item Count=== | ===Item Count=== | ||
Line 58: | Line 58: | ||
WriteLn('Items in Dictionary: ' + IntToStr(MyDictionary.Count)); | WriteLn('Items in Dictionary: ' + IntToStr(MyDictionary.Count)); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
===Loops=== | ===Loops=== | ||
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
//Loop Keys | //Loop Keys | ||
− | for | + | for KeyStr in MyDictionary.Keys do |
− | WriteLn('Found key:' + | + | WriteLn('Found key:' + KeyStr); |
Line 96: | Line 95: | ||
+ | ===Trying=== | ||
+ | |||
+ | ====TryGetValue==== | ||
+ | |||
+ | TryGetValuetakes two Arguments ->(key, value) and returns a boolean. | ||
+ | If found, it returns true and the provided 'value' variable becomes the value of the searched KeyValuePair | ||
+ | If not found,the function returns False and the provided 'value'-variable is nil | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | writeln(BoolToStr(MyDictionary.TryGetValue('Key', SearchedValue))); | ||
+ | if MyDictionary.TryGetValue('Key', SearchedValue) then | ||
+ | writeln('Key found. Its Value is ' + SearchedValue.Name ) | ||
+ | else | ||
+ | if SearchedValue = Nil then | ||
+ | writeln('the provided Value is Nil now'); | ||
+ | </syntaxhighlight> | ||
==Source Code== | ==Source Code== |
Revision as of 01:37, 13 May 2023
Basic syntax
{$mode objfpc}
program Example;
uses
Generics.Collections; //import the generics-library of the RTL
type
TStringStringDictionary = specialize TDictionary<string, string>; //specialize a new dictionary and set the desired data-type of key and value
var
MyDictionary : TStringStringDictionary;
begin
MyDictionary := TStringStringDictionary.Create;
try
//do stuff with your dictionary..
finally
MyDictionary.Free;
end;
end.
Usage:
Add
Add Entry or update its current value (key, value)
MyDictionary.AddOrSetValue('Key1', 'Value1');
Remove
MyDictionary.Remove('Key2');
If the Key does not exist, no Error is thrown.
Clear
MyDictionary.Clear;
Get Value
WriteLn(MyDictionary.Items['Key1']);
If the provided key does not exist, this will throw an Error :'Dictionary Key does not Exist'. You can use 'TryGetValue' instead.
Item Count
Total number of Items in dictionary (count)
WriteLn('Items in Dictionary: ' + IntToStr(MyDictionary.Count));
Loops
//Loop Keys
for KeyStr in MyDictionary.Keys do
WriteLn('Found key:' + KeyStr);
//Loop Values
for ValueStr in MyDictionary.Values do
WriteLn('Found Value: ' + ValueStr);
//Loop Key-Value-Pairs
//var KeyValuePair : TStringStringDictionary.TDictionaryPair;
for KeyValuePair in MyDictionary do
WriteLn('Found a Pair: Key:' + KeyValuePair.Key + ' Value:' + KeyValuePair.Value);
Check If Key/Value Exists
//Check if Key exists
if MyDictionary.ContainsKey('Key1') then
WriteLn('key exists')
else
WriteLn('key not found');
//Check if Value exists
if MyDictionary.ContainsValue("Searched value") then
writeln('value exists')
else
writeln('value not found');
Trying
TryGetValue
TryGetValuetakes two Arguments ->(key, value) and returns a boolean. If found, it returns true and the provided 'value' variable becomes the value of the searched KeyValuePair If not found,the function returns False and the provided 'value'-variable is nil
writeln(BoolToStr(MyDictionary.TryGetValue('Key', SearchedValue)));
if MyDictionary.TryGetValue('Key', SearchedValue) then
writeln('Key found. Its Value is ' + SearchedValue.Name )
else
if SearchedValue = Nil then
writeln('the provided Value is Nil now');
Source Code
{$mode objfpc}
program Example;
uses
Generics.Collections //import the generics-library of the RTL
type
TStringStringDictionary = specialize TDictionary<string, string>; //specialize a new dictionary and set the data-type of key and value
var
MyDictionary : TStringStringDictionary;
TestClass : TmyCoolClass;
//
KeyString: string;
KeyValuePair : TStringStringDictionary.TDictionaryPair;
SearchedValue : string;
begin
//create the dictionary
MyDictionary := TStringStringDictionary.Create;
//Add Element or update its value to new (key, value)
MyDictionary.AddOrSetValue('Key1', 'Value1');
//Remove Element
MyDictionary.AddOrSetValue('Key2', 'Another Value');
MyDictionary.Remove('Key2');
//Clear entire dictionary
MyDictionary.Clear;
// Total number of Items in dictionary (count)
writeln('Items in Dictionary: ' + IntToStr(MyDictionary.Count));
//Get Value by Key
writeln(MyDictionary.Items['Key1'].Name); //If the provided key does not exist, this will throw a Error :'Dictionary Key does not Exist'
//----------------------Trying------------------
//TryAdd returns True if added successfully, False otherwise
writeln('TryAdd: ' + BoolToStr(MyDictionary.TryAdd('Key2',TestClass ),'True', 'False'));
//'TryGetValue'takes two Arguments ->(key, value) and returns a boolean.
//If found, it returns true and the provided 'value' variable becomes the value of the searched KeyValuePair
//if not found,the function returns False and the provided 'value'-variable is nil
writeln(BoolToStr(MyDictionary.TryGetValue('Key', SearchedValue)));
if MyDictionary.TryGetValue('Key', SearchedValue) then
writeln('Key found. Its Value is ' + SearchedValue.Name )
else
if SearchedValue = Nil then
writeln('the provided Value is Nil now');
//----------------------Loop through the Dictionary------------------
//Loop Keys
for KeyString in MyDictionary.Keys do
writeln('Found key:' + KeyString);
//Loop Values
for ValueStr in MyDictionary.Values do
writeln('Found Value:' + ValueStr);
//Loop Key-Value-Pairs
for KeyValuePair in MyDictionary do
writeln('Found a Pair: Key:' + KeyValuePair.Key + ' Value:' + KeyValuePair.Value.Name);
//----------------------Check if.. exists in whole Dictionary------------------
//Check if Key exists
if MyDictionary.ContainsKey('Key1') then
writeln('key exists')
else
writeln('key not found');
//Check if Value exists
if MyDictionary.ContainsValue(TestClass) then
writeln('value exists')
else
writeln('value not found');
readln() //for Windows-console-users
end.