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 :

Delphi 10.4 hyperlien vers les procédures inactif


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut Delphi 10.4 hyperlien vers les procédures inactif
    Bonjour,

    j'utilise Delphi 10.4 PRO récemment acquis, j'utilisais précédemment Delphi 10.3 Community Edition;

    Je n'arrive pas à me déplacer (CTRL+Click Gauche Souris) depuis l'utilisation d'une procédure vers sa définition. ci-dessous un exemple expurgé j'ai supprimé toutes les lignes entre l'implémentation de la méthode "procedure TMyClasse.testCopier;" et l'implémentation de la procédure "copieGrille" (sinon le déplacement en suivant l'hyperlien n'a pas beaucoup d'intérêt). Donc lorsque j'essaie d'aller à la définition de "copieGrille" depuis son utilisation dans "TMyClasse.testCopier", ça ne marche pas !!!

    Et bien sûr cela fonctionne parfaitement en 10.3 !

    S'agit-il d'une option non cochée ?

    Code Pascal : 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
    unit Unit1;
     
    interface
     
    uses grids;
     
    type
    TMyClasse=class
     _gr1,_gr2:TStringGrid;
    public
     procedure testCopier;
    end;
     
    implementation
     
    procedure copieGrille(const grilleOrigine:TStringGrid;
      const grilleCible:TStringGrid);overload;forward;
     
    procedure TMyClasse.testCopier;
    begin
      copieGrille(_gr1,_gr2);
    end;
     
    procedure copieGrille(const grilleOrigine:TStringGrid;
      const grilleCible:TStringGrid);
    begin
     
    end;
     
    end.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 676
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Cela est du au LSP (Language Server Protocol) qui analyse à la volée le code saisi. Je n'avais pas fait attention à ce point : quand on fait CTRL + clic sur la déclaration d'une méthode, cela déplace bien le curseur à l'implémentation de celle ci. Quand on fait CTRL + clic sur le nom de la méthode (dans la partie implémentation) cela ne remonte par le curseur à sa déclaration. En revanche les raccourcis claviers CTRL+SHIFT+ flèche du bas (pour aller à l'implémentation) et CTRL+SHIFT + flèche du haut (pour aller à la déclaration) fonctionnent.

    Il est possible de revenir à la configuration que vous aviez via le menu "Outils/Options". Allez dans la rubrique "Interface utilisateur" puis "Options de l'éditeur" puis "Langage". Cliquez alors sur l'onglet "Audit de code" et dans la combobox "Gestionnaire d'audit de code" passez de "Delphi (Language Server Protocol)" à "Delphi (Audit de code classique)". Vous retrouverez alors vos habitudes mais perdrez évidemment les avantages du LSP (par exemple moi j'aime bien lorsque je rajoute un paramètre à une méthode le CTRL+SHIFT+ALT+P pour synchroniser la signature de la méthode entre la déclaration et sa définition).
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut
    Merci pour les informations

    J'ai cependant voulu creuser la question Dans le code ci-dessous le lien hypertexte est bien suivi de
    TMyClasse.testCopier vers la méthode TMyClasse.methodeCopier mais pas
    vers la procédure copieGrille à moins que l'implémentation de cette procédure soit faite avant
    le code de TMyClasse.testCopier ! Le LSP ne prendrait-il pas en compte les déclarations forward ?

    Code pascal : 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
    unit Unit1;
     
    interface
     
    uses grids;
     
    type
    TMyClasse=class
     _gr1,_gr2:TStringGrid;
    public
     procedure testCopier;
     procedure methodeCopier(const grilleOrigine:TStringGrid;
      const grilleCible:TStringGrid);
    end;
     
    implementation
     
    procedure copieGrille(const grilleOrigine:TStringGrid;
      const grilleCible:TStringGrid);overload;forward;
     
     
    procedure TMyClasse.testCopier;
    begin
      copieGrille(_gr1,_gr2);
      methodeCopier(_gr1,_gr2);
    end;
     
    procedure TMyClasse.methodeCopier(const grilleOrigine:TStringGrid;
      const grilleCible:TStringGrid);
    begin
    end;
     
    procedure copieGrille(const grilleOrigine:TStringGrid;
      const grilleCible:TStringGrid);
    begin
    end;
     
     
    end.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Citation Envoyé par Négrier Voir le message
    Le LSP ne prendrait-il pas en compte les déclarations forward ?
    En Delphi 10.0 Seattle, cela fonctionne le forward, j'ai 13 fonctions dans un source qui sont dans implementation, et dans l'ordre : déclarées en forward, exportées en exports (DLL) puis enfin implémentées.
    A noter que les 13 classes dans cette unité sont déclarées en interface et implémentées après les fonctions exportées.

    Possible que l'adoption du LSP venant de Visual Studio ne propose pas toutes les finesses du langage Delphi.

    J'ai testé ton fichier*, navigation sans problème au Ctrl+Clic et au CTRL+SHIFT+flèche
    Faudrait vérifier si une QC a été ouverte pour une éventuelle régression ?!


    *l'ayant testé dans un projet DLL, j'ai juste ajouté "Vcl." devant "Grids"
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut
    En Delphi 10.3 :
    .ajout d'une nouvelle unité
    .collage du code de mon post
    .ni enregistrement, ni compilation
    --> l'hyperlien vers procedure copieGrille fonctionne parfaitement !

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 676
    Billets dans le blog
    2
    Par défaut
    Je viens de faire un essai (Delphi 10.4.2) avec le deuxième code testé : en sélectionnant le gestionnaire d'audit de code à "Delphi (Audit de code classique)", le CTRL+Clic fonctionne avec toutes les méthodes qu'on soit dans la déclaration ou la définition.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 157
    Par défaut
    Citation Envoyé par Négrier Voir le message
    En Delphi 10.3 :
    .ajout d'une nouvelle unité
    .collage du code de mon post
    .ni enregistrement, ni compilation
    --> l'hyperlien vers procedure copieGrille fonctionne parfaitement !
    Comme indiqué dans ce poste sur la version 10.3 je n'ai pas rencontré ce problème alors que mon "unité de test" n'est ni enregistrée ni compilée (et je n'ai pas changé d'ordi !
    Lorsque je choisi "Audit de code classique" (comme suggéré par gbegreg) sur la 10.4 cela fonctionne également.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/09/2016, 07h51
  2. [1.x] Hyperlien vers les foreign key dans les tables
    Par Maze45 dans le forum Symfony
    Réponses: 2
    Dernier message: 08/07/2011, 08h59
  3. Réponses: 4
    Dernier message: 31/03/2005, 08h48
  4. Probleme avec les procédures d'opengl dans Vb 6
    Par fun31 dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/12/2004, 07h57
  5. Informations sur les procédures stockées
    Par jfphan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/01/2004, 14h30

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