Difference between revisions of "User:Nhollm"
From Free Pascal wiki
Jump to navigationJump to searchLine 96: | Line 96: | ||
===Trying=== | ===Trying=== | ||
+ | |||
+ | ====TryAdd==== | ||
+ | TryAdd returns True if added successfully, False otherwise. | ||
+ | <syntaxhighlight lang="pascal"> | ||
+ | writeln('TryAdd: ' + BoolToStr(MyDictionary.TryAdd('Key2',TestClass ),'True', 'False')); | ||
+ | </syntaxhighlight> | ||
====TryGetValue==== | ====TryGetValue==== | ||
− | |||
TryGetValue takes two Arguments ->(key, value) and returns a '''boolean'''.<br> | TryGetValue takes two Arguments ->(key, value) and returns a '''boolean'''.<br> | ||
− | If found, it returns '''true''' and the provided 'value' variable becomes the value of the searched KeyValuePair<br> | + | If found, it returns '''true''' and the provided 'value' variable becomes the value of the searched KeyValuePair.<br> |
− | If not found,the function returns '''False''' and the provided 'value'-variable is '''nil'''. | + | If not found,the function returns '''False''' and the provided 'value'-variable is '''nil''' (or whatever value the variable had before the function call). |
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
writeln(BoolToStr(MyDictionary.TryGetValue('Key', SearchedValue))); | writeln(BoolToStr(MyDictionary.TryGetValue('Key', SearchedValue))); | ||
if MyDictionary.TryGetValue('Key', SearchedValue) then | if MyDictionary.TryGetValue('Key', SearchedValue) then | ||
− | writeln('Key found. Its Value is ' + SearchedValue | + | writeln('Key found. Its Value is ' + SearchedValue) |
else | else | ||
if SearchedValue = Nil then | if SearchedValue = Nil then | ||
writeln('the provided Value is Nil now'); | writeln('the provided Value is Nil now'); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
==Source Code== | ==Source Code== |
Revision as of 01:46, 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
TryAdd
TryAdd returns True if added successfully, False otherwise.
writeln('TryAdd: ' + BoolToStr(MyDictionary.TryAdd('Key2',TestClass ),'True', 'False'));
TryGetValue
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 (or whatever value the variable had before the function call).
writeln(BoolToStr(MyDictionary.TryGetValue('Key', SearchedValue)));
if MyDictionary.TryGetValue('Key', SearchedValue) then
writeln('Key found. Its Value is ' + SearchedValue)
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.