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

Lazarus Pascal Discussion :

Erreur exaspérante : unité introuvable appelée par une unité située dans le même dossier [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 412
    Billets dans le blog
    2
    Par défaut Erreur exaspérante : unité introuvable appelée par une unité située dans le même dossier
    Bsr à tous,

    Soit trois unités situées dans le même dossier:

    convertisseurjpc.pas
    GeneralFunctions.pas
    outils.pas

    L'unité 'convertisseurjpc.pas' appelle les deux autres.

    A la compilation:
    GeneralFunctions est trouvée
    outils.pas est soit-disant introuvable, alors qu'il est dans le même dossier

    Incompréhensible et exaspérant
    Comment peut-on avancer avec de tels comportements incompréhensibles du compilateur ?
    Le fichier 'outils.pas' est bien entendu présent dans le dossier de GeneralFunctions.pas

  2. #2
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,

    Pourriez vous indiquer la version de Lazarus que vous utilisez, le système d’exploitation sous lequel vous l'utilisez ?

    Sous Linux du fait de la sensibilité à la casse, le nom des fichiers doit être composé que de minuscules.

    Sinon, ouvrez le fichier outils.pas depuis l'EDI, puis rajoutez le au projet via le menu Projet > Ajouter le fichier de l'éditeur au projet (Maj+F11)
    Sous Linux, il vous sera demandé par l'EDI de le renommer si des majuscules composent le nom.

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 132
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 132
    Par défaut
    Citation Envoyé par Ph. B. Voir le message
    Sous Linux du fait de la sensibilité à la casse, le nom des fichiers doit être composé que de minuscules.
    Pas nécessairement : il suffit de respecter la casse, le message est trompeur...

    Nom : bidon.png
Affichages : 463
Taille : 27,8 Ko

    Ensuite, depuis l'unité qui en a besoin, uses BiDon et je peux faire afficher des messages sans problème,

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    au vue du nom de ton unité "GeneralFunctions.pas"
    je suppose que ton unité s'appelle "Outils.pas"
    dans le monde linux les recherches de fichiers sont case-sensitif malheureusement

  5. #5
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par Jipété Voir le message
    Pas nécessairement : il suffit de respecter la casse, le message est trompeur...
    Ensuite, depuis l'unité qui en a besoin, uses BiDon et je peux faire afficher des messages sans problème,
    Je ne suis pas d'accord !

    Pourquoi ?

    1. Le code source pascal n'est pas sensible à la casse.
    2. Lazarus sauve systématiquement les unités dans des fichiers dont les noms sont en minuscules (sous Linux comme sous Windows !)
      Par défaut, l'unité Unit1 est enregistrée dans le fichier unit1.pas, l'unité que je renomme MonUnite est enregistrée dans le fichier monunite.pas et ainsi de suite.
      Je peux ensuite la référencer dans le code source avec un uses MONunite ou uses MoNuNiTe si cela me chante et sans que cela pose problème.


    Respecter la casse pour les noms de fichiers revient à se compliquer inutilement le processus de développement (multiplateforme, avec un gestionnaire de source, etc) et va à l'encontre du fonctionnement par défaut de Lazarus.

  6. #6
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Citation Envoyé par Ph. B. Voir le message
    Bonjour,


    Je ne suis pas d'accord !

    Pourquoi ?

    1. Le code source pascal n'est pas sensible à la casse.
    2. Lazarus sauve systématiquement les unités dans des fichiers dont les noms sont en minuscules (sous Linux comme sous Windows !)
      Par défaut, l'unité Unit1 est enregistrée dans le fichier unit1.pas, l'unité que je renomme MonUnite est enregistrée dans le fichier monunite.pas et ainsi de suite.
      Je peux ensuite la référencer dans le code source avec un uses MONunite ou uses MoNuNiTe si cela me chante et sans que cela pose problème.


    Respecter la casse pour les noms de fichiers revient à se compliquer inutilement le processus de développement (multiplateforme, avec un gestionnaire de source, etc) et va à l'encontre du fonctionnement par défaut de Lazarus.
    Je suis d'accord avec toi que respecter la casse des noms de fichiers c'est ce compliquer la vie. A la base, c'est vrai que Le language pascal,n'est pas sensible à la casse. Mais avec le couple Linux/Lazarus oui.
    Sous Delphi, on n'a pas ce problème. Sous Windows et avec Lazarus, il n'y a aucun problème et sous Mac je ne sais plus (il faudrait que je vérifie). Ce problèmes est d'ailleurs pas mal embêtant quand tu fais de la cross-compilation. C'est un problème récurant qui apparait souvent dans les demandes des utilisateurs auprès de la team Lazarus. D'ailleurs je ne sais même plus si c'est lié à FPC ou Lazarus j'ai un doute.
    C'est pour cela que par défaut Lazarus te propose de renommer les fichiers en minuscules. Avec Lazarus si tu veux faire du multiplateforme tu n'as pas le choix que d'avoir la même casse pour le nom de l'unité et du fichier. Mais bon un peu d'uniformisation entre les deux ne fait pas de mal et c'est d'ailleurs ce que je recommande de faire Uses MonUnit; // MonUnit.pas pas de risque et depuis un explorateur de fichier tu identifies clairement le nom de l'unité et dans le code c'est la même chose. Personnelement je privilégie beaucoup le CamelCase. Je trouve ça visuellement mieux et j'identifie plus facilement les différents éléments, et cela évite la confusion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    uses 
      classes, sysutils, unixutils;
     
    var
      masupervariable : Integer
      uneautrevaribale : String;
     
    function calculdistance(a,b : tvecteur) : Single;
    vs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Uses
      Classes, SysUtils, UnixUtils;
     
    Var
      MaSuperVariable : Integer;
      UneAutreVariable : String;
     
    function CalculDistance(a,b : TVecteur) : Single;
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  7. #7
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 786
    Par défaut
    Bonjour,
    Citation Envoyé par BeanzMaster Voir le message
    Je suis d'accord avec toi que respecter la casse des noms de fichiers c'est ce compliquer la vie. A la base, c'est vrai que Le language pascal,n'est pas sensible à la casse. Mais avec le couple Linux/Lazarus oui.
    Je maintiens que non. J'utilise Lazarus 1.8.4 sous Ubuntu 18.04 et Debian 9 et il n'y aucun problème tant que l'on utilise des noms de fichier avec des minuscules.
    Dans le code source, on peut bien entendu utiliser pour plus de clarté ce que vous nommez le CamelCase. Cela me parait même indispensable comme vous l'avez souligné.
    Citation Envoyé par BeanzMaster Voir le message
    Sous Delphi, on n'a pas ce problème. Sous Windows et avec Lazarus, il n'y a aucun problème
    Bien sur car le système d'exploitation n'est pas sensible à la casse.
    Citation Envoyé par BeanzMaster Voir le message
    et sous Mac je ne sais plus (il faudrait que je vérifie).
    Je ne sais pas et je n'ai rien affirmé à ce sujet.
    Citation Envoyé par BeanzMaster Voir le message
    Avec Lazarus si tu veux faire du multiplateforme tu n'as pas le choix que d'avoir la même casse pour le nom de l'unité et du fichier.
    Non, cf. ma 1° remarque de ce message... C'est plutôt le fait de respecter une casse pour les noms de fichier qui pose problème, car elle impose une trop stricte et inutile rigidité.
    Citation Envoyé par BeanzMaster Voir le message
    Personnelement je privilégie beaucoup le CamelCase. Je trouve ça visuellement mieux et j'identifie plus facilement les différents éléments, et cela évite la confusion.
    Je suis d'accord pour le code source.
    Les fichiers eux, peuvent être triés par nom, on peut utiliser l'underscore '_' pour leur nommage et séparer 2 mots (par exemple : mon_unite.pas).

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/11/2010, 17h08
  2. Réponses: 4
    Dernier message: 02/09/2009, 09h23
  3. Réponses: 1
    Dernier message: 08/08/2009, 13h33
  4. Réponses: 1
    Dernier message: 12/06/2008, 18h03
  5. appel d'une procedure situé dans un autre projet
    Par stdebordeau dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/10/2007, 16h30

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