Difference between revisions of "User:Nhollm"
From Free Pascal wiki
Jump to navigationJump to searchLine 1: | Line 1: | ||
− | + | ==Basic syntax== | |
+ | |||
+ | <syntaxhighlight lang="pascal"> | ||
+ | |||
+ | 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; | ||
+ | begin | ||
+ | MyDictionary := TStringStringDictionary.Create; | ||
+ | try | ||
+ | //do stuff with the dictionary.. | ||
+ | finally | ||
+ | FreeAndNil(MyDictionary); | ||
+ | end; | ||
+ | end. | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==Source Code== | ||
<syntaxhighlight lang="pascal"> | <syntaxhighlight lang="pascal"> | ||
− | program | + | {$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 | begin | ||
− | writeln(' | + | |
+ | //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 TestClass in MyDictionary.Values do | ||
+ | writeln('Found Value:' + TestClass.Name); | ||
+ | |||
+ | |||
+ | //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. | end. | ||
+ | |||
+ | |||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 23:50, 12 May 2023
Basic syntax
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;
begin
MyDictionary := TStringStringDictionary.Create;
try
//do stuff with the dictionary..
finally
FreeAndNil(MyDictionary);
end;
end.
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 TestClass in MyDictionary.Values do
writeln('Found Value:' + TestClass.Name);
//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.