IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Inversion de uses pour supprimer des Warning à la construction


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Par défaut Inversion de uses pour supprimer des Warning à la construction
    Bonjour à toutes et à tous
    Je travaille sur un projet Delphi (version D10.3.3) qui est en constante évolution depuis plus de 15 ans, et je corrige des avertissements et des conseils qui sont présents depuis quelques années (je n'ai pas l'historique précis car j'ai rejoint l'équipe il y a 1 an et demi)
    Dans les sources du projet, il y a des composants que l'on a retouchés/développés en interne

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    unit Outils;
     
    interface
     
    uses Dialogs,
      Classes, Windows, Messages, Controls, Forms, StdCtrls, Math,
      ExtCtrls, Menus, Graphics, Buttons, Themes, SysUtils,
      Types, UITypes, ActnList, ImgList, ActiveX, CommCtrl, ComCtrls, PngImage, PngImageList,
      AdvGDIP, GDIPicture, GDIPPictureContainer,
      AdvMenus, AdvMenuUtil, AdvOfficeTabSet, AdvMetroButton,
      AdvSmoothScrollBar, AdvFontCombo, AdvGraphicCheckLabel, slstbox;
     
    {$R RessourcesComposants.res}
    {$R RessourcesComposantsBMP.res}
     
    type
     
      TAlignmentV = (avTop, avCenter, avBottom);
      TFillDirection = (fdTopToBottom, fdBottomToTop, fdLeftToRight, fdRightToLeft);
     
     
      {------ TCustomPersoButton -----}
     
      TCustomPersoButton = class;
     
      { TCustomPersoButtonActionLink (inspiré du TSpeedButtonActionLink)}
      TCustomPersoButtonActionLink = class(TControlActionLink)
      protected
        FClient: TCustomPersoButton;
        FImageIndex: Integer;
        procedure AssignClient(AClient: TObject); override;
        function IsCheckedLinked: Boolean; override;
        function IsGlyphLinked(Index: TImageIndex): Boolean; virtual;
        function IsGroupIndexLinked: Boolean; override;
        function IsImageIndexLinked: Boolean; override;
        procedure SetGroupIndex(Value: Integer); override;
        procedure SetChecked(Value: Boolean); override;
        procedure SetImageIndex(Value: Integer); override;
      public
        constructor Create(AClient: TObject); override;
      end;
     
    ...
     
    end.
    En l'état, quand je construis mon projet, j'ai un W1000 qui apparaît dans la Sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D:\Dev\Sources\Commun\ComposantsVisuels\Outils.pas(33,35): warning W1000: W1000 Le symbole 'TImageIndex' est déprécié: 'Use System.UITypes.TImageIndex'
    En effet, dans une version antérieure de Delphi, le type TImageIndex était déclaré dans ImgList. Avec l'apparition de FireMonkey, les unités ont évolué, certaines ont pris un préfixe Vcl ou Fmx, et en l'occurrence ImgList est devenue Vcl.ImgList. Cette évolution a conduit à "déplacer" certains types pour qu'ils soient accessibles en FMX : le TImageIndex a été déplacé dans System.UITypes, et son utilisation dans Vcl.ImgList a été dépréciée (ce qui amène le W1000 à la construction).

    Nom : ImgList.png
Affichages : 141
Taille : 9,5 Ko


    Ma question est la suivante : dans les uses de mon unité Outils, si je déplace UITypes après la déclaration de l'unité ImgList, mon Warning disparaît à la construction. Est-ce qu'il y a un impact sur le comportement de l'application si je fais cette inversion de uses, ou bien je peux faire valider cette modification sans avoir à refaire tous les tests ?
    Merci pour votre retour

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    alors le fait de mettre la "bonne" unité en dernier fait en effet disparaître le Warning car Delphi tombe sur la "bonne" déclaration qui ne comprend pas de mention "deprecated"

    System.UITypes ne me semble pas être de nature à pouvoir perturber le code...mais sait-on jamais

    il existe cependant une autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    uses
      System.UITypes,
      Vcl.ImgList;
     
    type
      TImageIndex = System.UITypes.TImageIndex;
     
    procedure test;
    begin
      var i : TImageIndex;
    end;
    en redéclarant TImageIndex avec un nom qualifié qui pointe sur celui de System.UITypes, le warning disparait également.

    tu peux ajouter un "// todo: à supprimer lors des prochaines tests en inversnant System.UITypes et Vcl.ImgList dans les uses"
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 79
    Par défaut
    Merci pour ta réponse, ça me convient très bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Expression régulière pour supprimer des doublons
    Par cbroissa dans le forum Langage
    Réponses: 5
    Dernier message: 20/05/2017, 01h59
  2. Réponses: 2
    Dernier message: 29/08/2006, 13h59
  3. Réponses: 45
    Dernier message: 04/05/2006, 01h10
  4. Utiliser awk pour supprimer des retours charrios
    Par tomsoyer dans le forum Linux
    Réponses: 3
    Dernier message: 03/01/2005, 18h27
  5. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo