Bonjour,
Je cherche à moderniser et à supprimer du vieux code plus maintenu par du code standard concernant les Generics.
Voici le code de base :
J'ai cherché à le remplacer par ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 uses Classes, SysUtils, uutlGenerics,Windows; type TDirectoryNode = class; TDirectoryRootInfo = class; TDirectoryNodeList = class(specialize TutlList<TDirectoryNode>) public procedure SortRecursive(aComparer: IComparer; const aReverse: boolean); end; TDirNodeSortBySize = class(TInterfacedObject, TDirectoryNodeList.IComparer) public function EqualityCompare(constref i1, i2: TDirectoryNode): boolean; function Compare(constref i1, i2: TDirectoryNode): integer; end;
uutlGenerics provient des paquets, pas facile à trouver : bitSpaceControls et bitSpaceUtils...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 uses Classes, SysUtils, Generics.Defaults, Generics.collections, Windows; type TDirectoryNode = class; TDirectoryRootInfo = class; TDirectoryNodeList = class(specialize TList<TDirectoryNode>) public procedure SortRecursive(aComparer: IComparer; const aReverse: boolean); end; TDirNodeSortBySize = class(TInterfacedObject, TDirectoryNodeList.IComparer) public function EqualityCompare(constref i1, i2: TDirectoryNode): boolean; function Compare(constref i1, i2: TDirectoryNode): integer; end;
Sauf que mon Lazarus râle sur les ICOMPARER, et j'avoue je suis bien loin de maîtriser les generics couplés à une interface...
Une idée de ce qui me manque pour résoudre le problème ?
Merci d'avance de votre aide.
Partager