How to iterate over a collection of key-value pairs (associative array) in Pascal

2 Answers

0 votes
// Using TFPGMap (Free Pascal Generics Library)

program IterateMap;

{$mode objfpc}{$H+}

uses
  fgl;

type
  TStringIntMap = specialize TFPGMap<string, Integer>;

var
  dict: TStringIntMap;
  i: Integer;
begin
  dict := TStringIntMap.Create;
  try
    dict.Add('Alice', 10);
    dict.Add('Bob', 17);
    dict.Add('Marley', 23);
    dict.Add('Charlie', 36);

    // Iterate over key–value pairs
    for i := 0 to dict.Count - 1 do
      WriteLn(dict.Keys[i], ' = ', dict.Data[i]);

  finally
    dict.Free;
  end;
end.



(*
run:

Alice = 10
Bob = 17
Marley = 23
Charlie = 36

*)

 



answered Mar 22 by avibootz
0 votes
// Using TStringList as a key–value store

program IterateStringList;

{$mode objfpc}{$H+}

uses
  Classes, SysUtils;

var
  sl: TStringList;
  i: Integer;
begin
  sl := TStringList.Create;
  try
    sl.Values['Alice'] := '10';
    sl.Values['Bob'] := '17';
    sl.Values['Marley'] := '23';
    sl.Values['Charlie'] := '36';

    for i := 0 to sl.Count - 1 do
      WriteLn(sl.Names[i], ' = ', sl.ValueFromIndex[i]);

  finally
    sl.Free;
  end;
end.





(*
run:

Alice = 10
Bob = 17
Marley = 23
Charlie = 36

*)

 



answered Mar 22 by avibootz

Related questions

...