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 <code>FGL</code> (Free Generics Library). | |
− | + | ==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> | ||
− | + | ==IndexOfData== | |
− | + | 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: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | = | + | <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;