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

 Delphi Discussion :

[Débutant] Erreur répertoire de recherche


Sujet :

Delphi

  1. #1
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut [Débutant] Erreur répertoire de recherche
    Bonjour,
    Je ne comprends pas pourquoi, dans mon projet, il me montre bien une classe que j'ai créé personnelement (dans le gestionnaire de projet), et, lors de la compilation, il me dit : Identificateur non déclaré : 'NomDeMaClasse',...

    J'ai bien ajouter le chemin du répertoire ou se trouve le .pas et le.dcu de cette classe dans "Projet/Options/Repertoire Conditions/Chemin De Recherche", mais rien n'y fait, si quelqu'un sait comment résoudre ça, un coup de main serait le bienvenu !!!

  2. #2
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Ouais, bon, je sais pas pourquoi ça ne marchait pas avant, mais en ajoutant un use "NomDeMaClasse", ça marche, mais je comprends toujours pas pourquoi il y a besoin de ce use,...

  3. #3
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Chaque fichier de code source est indépendant. Il faut préciser dans chacun de ces fichiers les références aux autres fichiers (dont les classes/fonctions/variables sont utilisées).
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Hurin Voir le message
    .. mais je comprends toujours pas pourquoi il y a besoin de ce use,...
    Simplement parce qu'il absolument nécessaire de référencer (via la clause uses) les unités dont tu as besoin.

    Si Unit1 fait référence à une classe (une fonction, ...) définie dans Unit2, il est nécessaire de préciser Unit2 dans les uses de Unit1. Sans cette précision le compilateur ne trouveras pas ta fameuse classe.

    [edit] Grilled by Linkin

    @+ Claudius.

  5. #5
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Merci pour ces précisions Cl@udius et Linkin,...

    Mais, j'aurai encore besoin de petites confirmations : Si mon .pas s'appelle "ComposantCheck.pas" et qu'a l'intérieur j'ai ceci (au début):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    unit ComposantCheck;
     
    interface
     
    uses classes, quickrpt,graphics;
    type
      TComposantCheck = class(TQRPrintable)
    private // bon et le reste
    Pour le déclarer dans une autre classe,ImpressionDetail, je devrais faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    unit ImpressionDetail;
     
    interface
    uses
      ComposantCheck;
    Et pour déclarer un objet de ce type, je devrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Comp1: TComposantCheck;

    Il me semble que tout cela est vrai,...

    Bon, et bha avec tout ça, j'obtiens un beau message d'erreur qui me dit :
    Le champ Comp1 n'a pas de composant correspondant. Voulez vous retirez la déclaration ?

    J'y comprends plus rien du tout !!!

  6. #6
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Tu l'as sûrement rajouté dans la partie où il y a la déclaration des composants de la fiche.

    Soit tu le rajoutes dans une des autres parties (public, private ou protected):
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    type
      TForm1 = class(TForm)
      private
        { Déclarations privées }
      protected
        { Déclarations protected }
      public
        { Déclarations publiques }
      end;
    Soit tu enregistre ton composant (voir le tuto sur la création de composant http://sjrd.developpez.com/delphi/tu...ts/graphiques/)
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  7. #7
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Bah, je l'ai ajouté dans en faisant comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    unit ImpressionDetail;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, ExtCtrls, quickrpt, Qrctrls, TeeProcs, TeEngine, Chart,
      DBChart, QrTee, Series, ComposantCheck;
     
    type
      TImpressionDetailF12 = class(TForm)
    Gerard2: TComposantCheck;  //or c'est là qu'il plante, il ne reconnaît pas TComposantCheck
    ET dans mon unit ComposantCheck, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    unit ComposantCheck;
     
    interface
     
    uses classes, quickrpt,graphics;
    type
      TComposantCheck = class(TQRPrintable)
      private
    //suite du code
    Et avec ça, quand j'esssaye de voir la fiche, il ne me montre que le code, parceque:
    Classe TComposantCheck non trouvée.Ignorer l'erreur ou continuer ?
    Remarque : ceci peut provoquer la suppression de composants ou la perte de valeurs de propriétés.
    "Ignorer" "Annuler" "Tout Ignorer"
    Et si je mets ignorer, au debug, il plante magistralement dès que je fais appel à la classe incriminé,...

  8. #8
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Si tu le mets à cet endroit là, le message est normal, cet endroit est réservé aux composants que l'on pose avec l'éditeur sur la fiche.

    Comme solution:
    - soit tu installes ton composant pour qu'il apparaisse dans tes onglets de composants (voir le tuto), et tu le poses sur ta fiche et ça mettra automatiquement la déclaration à l'endroit où tu l'as mise (et dans le dfm, c'est à cause de ça que tu as ce message).
    - soit tu le créé dynamiquement et tu mets la déclaration en partie private, protected ou public.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  9. #9
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Tout d'abord merci de me répondre Linkin
    Ensuite, j'ai essayé de faire ce que tu m'as dis, en mettant toutes les déclarations d'objet de type TComposantCheck en public, mais ça ne change rien du tout,...
    ENfin si, là, à la compilation, il me dit :
    Classe TComposantCheck non trouvée.Processus stoppé.

  10. #10
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Là ça n'est pas normal, tu peux montrer la partie d'entête de ImpressionDetail maintenant qu'elle a été modifiée(les uses et la partie de déclaration de la form)?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  11. #11
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Bon, c'est un peu long, mais bon,...
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
     
    unit ImpressionDetail;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, DBTables, ExtCtrls, quickrpt, Qrctrls, TeeProcs, TeEngine, Chart,
      DBChart, QrTee, Series, ComposantCheck;
     
    type
      TImpressionDetailF12 = class(TForm)
        RapportDetail: TQuickRep;
        Table1: TTable;
        QRBand1: TQRBand;
        QRShape2: TQRShape;
        QRDBText3: TQRDBText;
        QRLabel27: TQRLabel;
        QRLabel1: TQRLabel;
        QRDBText1: TQRDBText;
        Reference: TQRDBText;
        QRDBText4: TQRDBText;
        QRDBText5: TQRDBText;
        QRDBText6: TQRDBText;
        QRDBText8: TQRDBText;
        QRDBText9: TQRDBText;
        QRDBText10: TQRDBText;
        QRDBText11: TQRDBText;
        QRDBText12: TQRDBText;
        QRDBText13: TQRDBText;
        QRDBText14: TQRDBText;
        QRDBText15: TQRDBText;
        QRDBText16: TQRDBText;
        QRDBText18: TQRDBText;
        QRDBText19: TQRDBText;
        QRDBText20: TQRDBText;
        QRLabel2: TQRLabel;
        QRLabel3: TQRLabel;
        QRLabel4: TQRLabel;
        QRLabel5: TQRLabel;
        QRLabel6: TQRLabel;
        QRLabel7: TQRLabel;
        QRLabel8: TQRLabel;
        QRLabel9: TQRLabel;
        QRLabel10: TQRLabel;
        QRLabel11: TQRLabel;
        QRLabel12: TQRLabel;
        QRLabel13: TQRLabel;
        QRLabel15: TQRLabel;
        QRLabel17: TQRLabel;
        QRShape1: TQRShape;
        QRLabel14: TQRLabel;
        QRLabel19: TQRLabel;
        QRLabel18: TQRLabel;
        QRLabel20: TQRLabel;
        QRLabel21: TQRLabel;
        QRDBRichText1: TQRDBRichText;
        QRDBRichText2: TQRDBRichText;
        QRLabel24: TQRLabel;
        QRLabel29: TQRLabel;
        QRDBText2: TQRDBText;
        QRLabel30: TQRLabel;
        QRDBText22: TQRDBText;
        QRLabel31: TQRLabel;
        QRLabel32: TQRLabel;
        QRLabel33: TQRLabel;
        QRLabel34: TQRLabel;
        QRShape3: TQRShape;
        QRLabel35: TQRLabel;
        QRLabel36: TQRLabel;
        QRDBText23: TQRDBText;
        QRDBText24: TQRDBText;
        QRLabel16: TQRLabel;
        QRDBText7: TQRDBText;
        NumeroClient: TQRLabel;
        DateClient: TQRLabel;
        QRDBText25: TQRDBText;
        QRDBText26: TQRDBText;
        QRShape4: TQRShape;
        QRDBRichText3: TQRDBRichText;
        QRLabel38: TQRLabel;
        QRLabel23: TQRLabel;
        QRShape5: TQRShape;
        QRShape6: TQRShape;
        QRShape7: TQRShape;
        QRLabel37: TQRLabel;
        QRLabel39: TQRLabel;
        QRLabel40: TQRLabel;
        QRLabel41: TQRLabel;
        QRLabel42: TQRLabel;
        QRLabel43: TQRLabel;
        QRLabel44: TQRLabel;
        QRShape8: TQRShape;
        QRLabel48: TQRLabel;
        QRLabel22: TQRLabel;
        QRLabel25: TQRLabel;
        QRLabel26: TQRLabel;
        QRLabel28: TQRLabel;
        QRLabel45: TQRLabel;
        QRLabel46: TQRLabel;
        QRLabel47: TQRLabel;
        QRLabel49: TQRLabel;
        QRLabel50: TQRLabel;
        QRLabel51: TQRLabel;
        QRShape9: TQRShape;
        QRLabel52: TQRLabel;
        QRLabel53: TQRLabel;
        procedure RapportDetailBeforePrint(Sender: TCustomQuickRep;
          var PrintReport: Boolean);
      private
     
        { Déclarations privées }
      public
      Gerard2: TComposantCheck;
       Gerard1: TComposantCheck;
        Gerard3: TComposantCheck;
        Gerard4: TComposantCheck;
        Lecluse1: TComposantCheck;
        Lecluse2: TComposantCheck;
        Lecluse3: TComposantCheck;
        Lecluse4: TComposantCheck;
        Lecluse5: TComposantCheck;
        Lecluse6: TComposantCheck;
        Lecluse7: TComposantCheck;
        Lecluse8: TComposantCheck;
        Pascal1: TComposantCheck;
        Pascal2: TComposantCheck;
        Pascal3: TComposantCheck;
        Pascal4: TComposantCheck;
        Pascal5: TComposantCheck;
        Pascal6: TComposantCheck;
        Pascal7: TComposantCheck;
        Pascal8: TComposantCheck;
        Pascal9: TComposantCheck;
        Pascal10: TComposantCheck;
        { Déclarations publiques }
      end;
     
    var
      ImpressionDetailF12: TImpressionDetailF12;
     
    implementation
    {les procedures}
    Merci Linkin

    [Edit] J'ai tout mis de peur d'en avoir laissé passer un qui me ferait planter le tout,...[/Edit]

  12. #12
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Je n'ai aucun problème de compilation sur cette partie de code (je l'ai mis dans un nouveau projet et pas de souci).

    Tu as esayé de double-cliquer sur l'erreur de compilation pour voir sur quelle ligne ça plantait?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  13. #13
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Mon problème, c'est que j'avais aussi fait un autre projet dans lequel j'avais fait les déclarations, ou j'avais copié le même code, et tout marchait très bien,...

    Mais sur ce code, à la compilation, ça passe, mais à l'exécution, j'ai un message d'erreur : "Classe TComposantCheck non trouvée"

    Et elle fait pourtant partie du projet !!!

    J'y comprends rien,...

  14. #14
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Bon, je ne comprends pas pourquoi ça ne marche pas, mais, en fouillant dans les sources que j'avais, j'ai trouvé des fichiers dont je ne me sers pas, ce qui me paraît suspect,...
    Par contre, en gros débutant que je suis, je ne sais pas comment m'en servir, ni même si je peux m'en servir.

    J'ai donc un .dpl, un .dof, et un dcp, ainsi qu'une ressource (*.res), un dcu et un cfg.

    Mais avec ça, je ne peux pas installer de package, ou alors je ne vois pas comment ?

  15. #15
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Bon, j'ai cherché ce qu'était les fichiers trouvés, et je suis tombé sur ça :
    .DCU (Delphi Compiled Units) : le résultat de la compilation d'une UNIT. C'est un fichier intermédiaire évitant de recompiler le .PAS si le texte du .PAS n'a pas été modifié depuis la dernière compilation

    .DCP (Delphi Compiled Package) : le fichier qui contient la partie compilée (fichier partiel, évitant les recompilations, l'équivalent pour le .DPK d'un .DCU)

    .DPL (Delphi Package Library) : la .DLL utilisable par les autres applications. C'est un "module windows", équivalent à une .DLL, mais avec les propriété Delphi permettant l'inclusion de CLASSes
    Or, j'ai ces 3 types de fichiers, mais je ne sais pas comment m'en servir, parce que quand je clique sur Composant/installer des paquets/ les seul paquets acceptés sont: *.bpl et *.dpc,...

  16. #16
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Si j'ai bien compris tu as deux projets, tu utilises ComponentCheck dans les deux?

    Est-ce que l'unité est présente dans les répertoires des deux projets (le fichier .pas)?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  17. #17
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Non, je n'avais qu'un seul projet, que j'ai repris, et que je ne maitrise donc pas du tout,...
    Et j'ai fait un autre projet pour comprendre pourquoi il n'acceptait pas la classe ComposantCheckBox, et je crois que je viens de comprendre.
    Mes problèmes avec cette classe sont dû au fait que ComposantCheckBox est un composant, et non pas une classe, et que je dois donc l'ajouter à ma liste de composants .

    Je le fais et je te donne les résultats.

    Encore Merci Linkin

  18. #18
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Il semble qu'avec l'installation du composant ComposantCheck, ça marche

    Merci Linkin,

  19. #19
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    De rien,

    Un petit Résolu? (lien en bas ou en haut il me semble)
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  20. #20
    Membre habitué
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Points : 153
    Points
    153
    Par défaut
    Oui, je crois que c'est fait maintenant !!!

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 26/08/2005, 10h02
  2. [Débutant]Erreur de compilation inconprehensible
    Par @r$£~%[ dans le forum C++
    Réponses: 15
    Dernier message: 14/08/2005, 20h04
  3. Réponses: 7
    Dernier message: 01/06/2005, 11h48
  4. [Débutant]Erreur compilation !
    Par gandalf_le_blanc dans le forum AWT/Swing
    Réponses: 23
    Dernier message: 30/08/2004, 14h23

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