System.Generics.Collections.pas ; System.Generics.Default.pas

Résolu
Utilisateur anonyme - Modifié le 4 nov. 2017 à 18:01
 Utilisateur anonyme - 5 nov. 2017 à 19:19
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

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
4 nov. 2017 à 19:50
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,
0
Utilisateur anonyme
4 nov. 2017 à 21:59
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
Modifié le 5 nov. 2017 à 18:17
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
0
Utilisateur anonyme
5 nov. 2017 à 19:19
Bonsoir Cirec;
Merci pour ta réponse, effectivement, ça tri bien les labels,
Merci beaucoup;
cordialement
0
Rejoignez-nous