System.Generics.Collections.pas ; System.Generics.Default.pas [Résolu]

Signaler
-
 Utilisateur anonyme -
Bonjour à tous,
Je n'arrive pas à trouver les fichiers :
"System.Generics.Collections.pas". ainsi que "System.Generics.Default.pas"

Je les ai cherché pour les télécharger, car je ne les ai pas avec ma version delphi, mais je ne les ai pas trouvé sur le net.
Quelqu'un peut-il me dire ou les trouver ???, car j'aurais besoin de les déclarer dans ma clause Uses.
Cordialement

2 réponses

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
Quelle version de Delphi as-tu

Generics.Collections & Generics.Default on été ajouté à partir de Delphi 2009

si ta version est < à 2009 ça ne sert à rien de les chercher sur le net tu ne pourras pas les compiler car utilise de nouvelles méthodes qui ne sont pas comprise par les anciens compilateurs.

Et si ta version est >= à 2009 tu les as déjà !!!

on ne peut pas simplement espérer télécharger des fichiers et les intégrer

Cordialement,
Utilisateur anonyme
Bonsoir Cirec,
merci pour ta réponse, j'utilise Delphi 2005,
Alors, comment faire j'ai un problème de déclaration
TObjectList<T> ; TComparer<T>

cordialement
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
eh bien je dirais vu la déclaration
tu cherches à trier une liste d'objets(T représentant le type)
il faut donc le faire à l'ancienne:
tu crées un TObjectList tu y ajoutes les objets par la méthode Add
ensuite tu crées une procédure de trie sur le modèle : TListSortCompare = function (Item1, Item2: Pointer): Integer;

c'est cette procédure qui déterminera le type de trie à effectuer.

par exemple pour trier le contenu de 8 Tlabel
Sur une fiche tu ajoutes 8 TLabel(nommés de Label1 à Label8) avec comme Caption un mot une lettre ou un nombre
ajoutes un TButton et un TMemo pour voir le résultat:
implementation
uses Contnrs;
{$R *.dfm}

// fonction de tri pour TLabel
// le tri est effectué sur le Caption des labels
// renvoi -1 si Item1 < Item2
// renvoi 0 si Item1 = Item2
// renvoi 1 si Item1 > Item2
function MySortFunc(Item1, Item2: Pointer): Integer;
var
  Lbl1: TLabel absolute Item1;
  Lbl2: TLabel absolute Item2;
begin
  Result := 0;
  if (Item1 = nil) or (Item2 = nil) then Exit;
  Result := CompareText(lbl1.Caption, lbl2.Caption);
  // pour un résultat par ordre décroissant activer la ligne suivante:
  //Result := Result * -1;
end;

procedure TMainform.Button1Click(Sender: TObject);
var
  obList: TObjectList;
  I: Integer;
begin
  Memo1.Clear;
  obList := TObjectList.Create;
  try
    for I := 0 to 7 do obList.Add(TLabel(FindComponent('Label'+IntToStr(I+1))));

    Memo1.Lines.Add('List avant tri:');
    for I := 0 to 7 do Memo1.Lines.Add(TLabel(obList.Items[I]).Caption);

    obList.Sort(MySortFunc);
    Memo1.Lines.Add('');

    Memo1.Lines.Add('List après tri:');
    for I := 0 to 7 do Memo1.Lines.Add(TLabel(obList.Items[I]).Caption);
  finally
    obList.Free;
  end;
end;




Cordialement,

    
@+ Cirec
Utilisateur anonyme
Bonsoir Cirec;
Merci pour ta réponse, effectivement, ça tri bien les labels,
Merci beaucoup;
cordialement