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

EDI Delphi Discussion :

[Kylix] Des slashs et antislashs dans les chemins du projet


Sujet :

EDI Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut Des slashs et antislashs dans les chemins du projet
    Bonjour,

    Je suis en train de développer une application Delphi7/Kylix 3 (installation sous Mdk9.2 sans aucun problème). Aucun soucis majeur, le code développé sous Delphi se compile directement sous Kylix, sauf les chemins dans le code source du projet, qui ressemble à ça
    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
    program tests_html;
     
    uses
      QForms,
      QGUITestRunner,
      TestFrameWork,
      test_chargement in 'test_chargement.pas',
      u_test_memoire in 'u_test_memoire.pas',
      u_declarations in '..\code\u_declarations.pas',
      u_arbo_elements in '..\code\u_arbo_elements.pas',
      u_arbo_lecture in '..\code\u_arbo_lecture.pas',
      test_arbo_elements in 'test_arbo_elements.pas',
      u_utilitaires_chaines in '..\code\u_utilitaires_chaines.pas',
      test_utilitaires_chaines in 'test_utilitaires_chaines.pas',
      test_manipule_html in 'test_manipule_html.pas',
      u_arbo_ecriture in '..\code\u_arbo_ecriture.pas',
      test_arbo_ecriture in 'test_arbo_ecriture.pas';
     
    {$R *.res}
     
    begin
      Application.Initialize;
      QGUITestRunner.RunRegisteredTests;
    end.
    Cette version marche bien sous Delphi, mais Kylix aime pas les antislashes, et si je met des slashes, c'est Delphi qui n'est pas content. Comme c'est du code généré en fonction des ajouts d'unités, un $IFDEF serait un peu génant. Une autre solution? Un patch pour que l'un des deux accepte les délimiteurs de l'autre?

    Et oui j'aimerai garder les chemins, ça évite un dossier avec tous les fichiers en vrac.

    Cédric

  2. #2
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    Salut cédric,
    Apparement ce ne sont que des unités qui seront compilé dans ton projet danc pour eviter de mettre "..\code\" je te conseille d'ajouter dans les options de ton projet le chemin "..\code\" (car kylix et deplhi savent le convertir d'eux meme d'une plateforme à l'autre).
    la vie est belle

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 55
    Points : 22
    Points
    22
    Par défaut questionnement
    Il n'y a pas de moyen(procédures) pour lui faire accepter les 2 ?
    Car la solution de noter /code/ sans les options est bonne mais si il y a plus se sous répertoire est il possible de s'en sortir ???

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    J'ai la même question que Oyoboy. Mes gros projets se répartissent sur plusieurs dossiers, pour classer un peu les unités.
    Mais je vais appliquer ta solution, tretsois, pour les petits.

  5. #5
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    Bonjour cedricgirad et oyoboy,
    Pour déclarer les chemins de recherche sous Kilix et Delphi je connais deux solutions:
    - Pour les unités systèmes ou génériques il faut ajouter les chemins de recherche dans les options de projets ( meme les déclarer comme options par défauts )
    - Pour les unités spécifiques à un projet les déclarer dans le fichier .dpr du projet en utilisant la clause $ifdef ...
    Je ne connais pas d'autres solutions mais j'avouerais que je n'ai jamais appronfondi le sujet.
    la vie est belle

  6. #6
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    PS: Je viens d'y penser vous pouver aussi créer deux fichier .dpr (un pour chaque environnement ). Ceci peut être lourd au premier abord mais utile, car si je ne me trompe pas on peut aussi y inclure certaines directives de compilation du style {+H} ou bien la gestion de thèmes ( en particulier pour windows ) . Je vous rappel tout de même que les options de compilations déclarées dans le projet sont prioritaires sur les options déclarées dans le fichier qui est spécifique ( .dof) .
    la vie est belle

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    Bon en clair on reste dans le bricolage. Merci Borland de pas penser à tout!
    Merci tretsois, mais dans un cas comme dans l'autre on peut avoir des soucis de mise à jour lors du changement de systeme.

  8. #8
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    Re cedricgirard,
    Ben oui mais en général on déclare les chemins de recherche dans les options du projet.
    Et pour le $ifdef <- ce n'est pas du bricolage .
    Tout de même Borland à quand même fourni un bel outil RAD multiplateforme pour linux et windows.
    Personnelement je vous conseillerais de prendre le livre "Delphi 7" de P Toth et O. Dahan car il y a un chapitre qui explique bien ce problème et à l'interieur tt est géré avec $ifdef .
    la vie est belle

  9. #9
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    J'ai déjà le livre, ayant discuté souvent sur les NG avec ses auteurs j'avais plutot confiance. Je vais retouner y faire un tour mais il me semble l'avoir lu.
    Je connais les ifdef, le problème est que le dpr est généré par Delphi en fonction des fichiers que l'on ajoute au projet. Et à chaque fois il faut corriger le dpr à la main, alors qu'il aurait suffit que Delphi accepte les / comme séparateurs de dossiers pour que l'on n'ai rien à faire. C'est pas énorme et ça aurait aidé.

  10. #10
    Membre habitué Avatar de tretsois
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 181
    Points : 196
    Points
    196
    Par défaut
    Salut cedricgirard,
    Je sais que l'utilisation des $ifdef fait peur mais apparement dans ton cas le projet se compile et tourne donc pas de soucis à te faire c juste deux conditions à ajouter normalement tu doit dejà en avoir deux je pense particulierement à :
    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
    uses
    {$ifdef MSWINDOWS} // unités spécifiques à Windows
    Windows, Messages,
    Controls, StdCtrls, // si sous windows tu veux utiliser la VCL
    {$endif}
    {$ifdef LINUX} // unités équivalentes sous linux
    Libc,
    QControls, QStdCtrls, // nota en utilisant ceux ci qui sont de la CLX c mieux et tu peux les déclarer normalement car elles existent sous windows
    {$endif}
    // à present ajout des répertoires de recherches
    {$ifdef win32}
    Unittest in '.\units\Unittest.pas';
    {$endif}
    {$ifdef linux}
    Unittest in './units/Unittest.pas';
    {$endif}
     
    const //si tu as des constantes d'interruptions différentes par exemple
    {$ifdef win32}
    BREAK = KEY_ECHAP; 
    {$endif}
    {$ifdef linux}
    BREAK = KEY_CTRL_C;
    {$endif}
     ...
    Pas besoin de tartiner plus je m'égare mais cet exemple montre bien que parfois il est utile de gérer deux fichiers .dpr (il est vrai entièrement géré par delphi et kylix) qu'il est possible d'éditer à la main aussi mais tu déclare bien ce que tu as besoin d'aller chercher ( par exemples des implémentations pour des fonctions qui n'existent pas sous linux.
    Ou bien deux unités d'en-tête (façon gcc et consors ) si ton pb ne se situent que sur les chemins j'ai testé, avant de te répondre, cette solution:
    dans la clause uses:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {$ifdef win32}
    Directories in 'winDirectory.pas';
    {$endif}
    {$ifdef linux}
    Directories in 'linDirectory.pas';
    {$endif}
    j'ai ensuite ouvert le bloc note, car je suis sous xp en ce moment, j'ai coupé tous les chemins (Ctrl-x) tous les chemins les ai collés dans le notepad fait enregistrer sous winDirectories.pas fermer puis ouvrir winDirectories.pas, enregistrer sous linDirectories.pas puis remplacer l'occurrence "\" par "/" (remplacer tout) et voila compilation réussi sous windows. Reboot compilation réussi dans Kylix.
    Nota: je trouve cette solution plus élégante car les variables, constantes et allias de fonctions spécifiques à chaque SE peuvent aussi etre intégré dans ces fichiers car ce sont des unités et donc plus souples.
    la vie est belle

  11. #11
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2002
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2002
    Messages : 299
    Points : 373
    Points
    373
    Par défaut
    Sauf que lors de l'ajout d'une unité au projet, il faut ajouter une ligne dans le ifdef ou dans l'unité spécifique, donc l'automatisme de Delphi est incomplet. Je ne vois pas en quoi les ifdef font peur, simplement je trouve un peu ridicule de faire le travail qui devrait être fait par Delphi, et ne trouvant pas de solution automatique je n'ai pas le choix.

    Je gère une foultitude de projets différents, gagner un peu de temps sur chaque est utile.

    Merci pour le temps prit
    Cédric

Discussions similaires

  1. Réponses: 13
    Dernier message: 02/09/2008, 10h46
  2. Réponses: 29
    Dernier message: 01/07/2006, 09h23
  3. Caractères transformés dans les chemins de fichier
    Par canabral dans le forum Langage
    Réponses: 4
    Dernier message: 15/12/2005, 15h24
  4. Gestion des versions d'objets dans les SGBD
    Par bennus dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 09/05/2005, 12h57
  5. Réponses: 17
    Dernier message: 18/03/2005, 09h23

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