Difference between revisions of "TFPGMap"

From Free Pascal wiki
Jump to navigationJump to search
(see also)
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
TFpGMap is part of the Free Generics Library
+
TFPGMap is part of the <code>FGL</code> (Free Generics Library).
  
Here is an example provided by forum user Remy Lebeau
+
==Example==
 +
<syntaxhighlight lang="pascal">
 +
uses
 +
  fgl;
 +
 +
type
 +
  TMyDict = specialize TFPGMap<string, integer>;
 +
var
 +
  Dict: TMyDict;
 +
  Value: Integer;
 +
begin
 +
  Dict := TMyDict.Create;
 +
  try
 +
    Dict.Add('VarName', 99);
 +
    ...
 +
    Value := Dict['VarName'];
 +
    ...
 +
  finally
 +
    Dict.Free;
 +
  end;
 +
end;
 +
</syntaxhighlight>
  
    uses
+
==IndexOfData==
      ..., fgl;
+
By default <code>TFPGMap<></code> does not provide a comparison for the Data type. So method IndexOfData will not find anything. You need to provide it by assigning the OnDataCompare event:
   
 
    var
 
      Dict: TFPGMap<string, integer>;
 
      Value: Integer;
 
    begin
 
      Dict := TFPGMap<string, integer>.Create;
 
      try
 
        Dict.Add('VarName', 99);
 
        ...
 
        Value := Dict['VarName'];
 
        ...
 
      finally
 
        Dict.Free;
 
      end;
 
    end;
 
  
==See Also==
+
<syntaxhighlight lang="pascal">
 +
uses
 +
  StrUtils, fgl;
  
* https://www.freepascal.org/docs-html/current/rtl/fgl/tfpgmap.html
+
{$R *.lfm}
 +
 
 +
type
 +
  TMyTest = specialize TFPGMap<PtrInt, String>;
 +
...
 +
  private
 +
    FMyTest: TMyTest;
 +
  ...
 +
  public
 +
    property MyTest: TMyTest read FMyTest write SetMyTest;
 +
  end;
 +
...
 +
 +
function CompareStringFunc(const aData1, aData2: String): Integer;
 +
begin
 +
  Result := AnsiCompareStr(aData1, aData2);
 +
end;
 +
 +
procedure TForm1.FormCreate(Sender: TObject);
 +
begin
 +
  FMyTest:= TMyTest.Create;
 +
  FMyTest.OnDataCompare := @CompareStringFunc;
 +
</syntaxhighlight>
 +
 
 +
==See also==
 +
 
 +
* [https://www.freepascal.org/docs-html/current/rtl/fgl/tfpgmap.html Free Pascal docs on TFPGMap]

Latest revision as of 18:47, 13 November 2022

TFPGMap is part of the FGL (Free Generics Library).

Example

uses
  fgl;
 
type
  TMyDict = specialize TFPGMap<string, integer>;
var
  Dict: TMyDict;
  Value: Integer;
begin
  Dict := TMyDict.Create;
  try
    Dict.Add('VarName', 99);
    ...
    Value := Dict['VarName'];
    ...
  finally
    Dict.Free;
  end;
end;

IndexOfData

By default TFPGMap<> does not provide a comparison for the Data type. So method IndexOfData will not find anything. You need to provide it by assigning the OnDataCompare event:

uses
  StrUtils, fgl;

{$R *.lfm}

type
  TMyTest = specialize TFPGMap<PtrInt, String>;
...
  private
    FMyTest: TMyTest;
  ...
  public
    property MyTest: TMyTest read FMyTest write SetMyTest;
  end;
...
 
function CompareStringFunc(const aData1, aData2: String): Integer;
begin
  Result := AnsiCompareStr(aData1, aData2);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  FMyTest:= TMyTest.Create;
  FMyTest.OnDataCompare := @CompareStringFunc;

See also