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

C++Builder Discussion :

Modifications DFM ignorées [IDE]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 6
    Par défaut Modifications DFM ignorées
    Bonjour,

    Après deux jours de galère pendant lesquelles j'ai parcouru le net à la recherche d'une solution, je me tourne vers un forum où quelqu'un aura peut-être rencontré ce problème.

    J'ai hérité d'un projet développé sous Borland C++ Builder 2006. Depuis un mois je faisais des corrections d'ordre logique, sans toucher à l'IHM, et tout allait bien. Pour un nouveau besoin j'ai dû ajouter une image sur une form, mais à l'exécution celle-ci ne s'affiche pas. Ayant tout essayé pour la faire apparaitre, j'ai fini par modifier des composants existants, du genre bouger un bouton, etc... Là encore, lorsque je recompile ou reconstruis l'appli, c'est l'ancienne version de l'IHM qui est reprise. Je ne comprends plus !!! Et si, à l'exécution, mon code fait référence à un des objets nouvellement insérés, j'ai droit à un EAccessError.

    J'ai essayé de supprimer les .OBJ, au cas où... Ils sont bien regénérés à la compil, mais rien ne bouge dans l'IHM.

    Est-ce que quelqu'un sait à quel moment sont utilisées les DFM ? J'ai l'impression que c'est lors de la phase de link, mais est-ce que des fichiers intermédiaires sont générés, que je pourrais purger ?

    Merci de votre aide, je n'en peux plus et mon projet prend du retard...

    PS: l'install de Borland C++ en elle-même fonctionne: j'ai créé un nouveau projet et modifié des données de l'IHM, mes modifs sont prises en compte.

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    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 081
    Par défaut
    Vérifie si tu n'as pas plusieurs fois le fichier DFM dans plusieurs répertoires
    Un collègue a eu le même problème, plusieurs fois le fichier DFM dans les sources, conséquence la ressource incorporée dans l'exe restait une vieille DFM et les nouveaux composants restaient à NULL, tes VA en 00000000

    le DFM Texte est transformé en une ressource binaire incluse dans l'exe, il n'y aucun contrôle dessus !
    Lorsque tu fais un new, cela va implicitement chercher une ressource ayant le nom de la classe, cela charge ce binaire qui instancie dynamiquement tous les objets (ça c'est du code Delphi)
    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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 6
    Par défaut
    Merci le troll (jolie photo, tu es bien mignon),
    malheureusement c'était le premier truc auquel j'avais pensé, et apparemment le problème ne vient pas de là: j'ai supprimé ou renommé toute copie existante de mes DFM, et même supprimé les copies de sauvegarde faites par Borland à chaque modification enregistrée.

    Je n'oublie pas cette hypothèse, car malgré tout l'erreur est humaine, et comme je ne suis pas un bot...

    Merci pour l'info de l'intégration de la dfm dans l'exe, je n'aurais pas cru que ça pouvait être aussi "simple".

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    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 081
    Par défaut
    Merci, tu as remarqué mon joli teint et ma peau douce

    Ah, tu n'as pas de doublon, c'est plus génant !

    Le Fichier DFM est souvent stocke en Texte, comme on le voit en faisant CTRL+F12
    Attention, il y a deux options, "Voir en Texte" juste affichage et "DFM Texte" pour le stockage
    Si tu veux comprendre le format binaire d'une DFM, j'en ai fait une rapide etude dans .dfm corrompu en XE

    Lorsque mon collègue a eu le même problème que toi en C++Builder 2007, pour vérifier, je lui faisais recherche le nom de la classe dans l'exe via UltraEdit

    Lorsque tu ajoute un nouveau button, tu dois voir nom apparaître dans l'exe, en 2006, c'est facile a trouver car ANSI
    Cela peut être un moyen pour toi de détecter l'exactitude de la ressource !

    Ah, aussi, le problème était avec un héritage de fenêtre, bon, personnellement, je n'aime pas l'héritage de DFM, mais je dois suivre la méthode de développement existante !
    Je n'ai jamais trop étudié comme cela fonctionne exactement pour les DFM hérités, je crois que récursivement en partant de la ressource ancêtre, il charge chaque ressource jusqu'à la classe finale, ... tu imagines qu'une mauvaise DFM dans l'héritage peut tout casser !



    En XE2, je n'ai pas encore regardé ce que cela donnait en binaire, je suppose que tout est doublé à cause de l'UNICODE, la recherche de chaine sera moins aisée !

    Tient le sujet Problème de Compilation avec Delphi 2009 semble très proche du tient mais en Delphi !
    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
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 6
    Par défaut
    J'ai ouvert une de mes DFM qui pose problème (c'est le cas de toutes celles de mon projet à priori) dans Notepad, pas de problème elle est bien lisible, et mes modifs apparaissent.
    J'ai lancé une recherche de *.dfm, j'en ai d'autres qui portent son nom mais dans d'autres projets, rien à voir (en même temps son nom est FMain.dfm, donc pas étonnant qu'elle ne soit pas seule avec ce nom). Une autre DFM qui me pose aussi problème n'a pas d'homonyme.

    Un collègue m'a suggéré de renommer FMain et de recompiler, on s'affranchit donc de tout problème de Nom de form; Même problème à la sortie.

    Ce que je ne comprends pas, c'est comment Borland peut ressortir des anciennes infos sur la dfm, si aucun fichier n'existe; et ce même après un redémarrage de l'IDE ! Il y a forcément des fichiers quelque part, à moins qu'il ne récupère les infos de la DFM dans l'ancien.EXE avant de le remplacer, mais ça devient carrèment vicieux là....

    Effectivement le problème que tu me cites avec Delphi est très [trop] ressemblant !
    En tout cas merci pour ton aide, même si je suis toujours bloqué je me dis que d'autres ont déjà eu le problème, bizarrement ça me rassure...

  6. #6
    Membre très actif Avatar de nirgal76
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2007
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 923
    Par défaut
    Et quand tu fais une modification à la fenêtre, que tu sauvegarde, tu ferme l'IDE et tu le relance, les modifications sont toujours là ou pas (sans même parler de compilation) ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 6
    Par défaut
    Toutes les modifications que je peux faire sur l'IHM sont conservées. Simplement, elles ne sont pas mises dans l'exécutable.
    Si un gars de chez Borland/Embarcadero passe par là, pourrait-il me dire d'où Builder me ressort la vieille version de mon IHM ???

    Même si je ne fais que modifier un objet existant (bouger un bouton par exemple), cette modif n'est pas prise en compte; c'est donc l'intégralité du fichier DFM qui est ignorée.

    Dans le doute, je suis reparti d'une vieille version de ma dfm, mais là encore les modifs ne sont pas portée à la compil. Je vais contacter le support Embarcadero, mais j'ai peur qu'ils me disent que la version de Builder n'est plus supportée, et de passer à une nouvelle version... Ce qui n'est pas envisageable.

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

Discussions similaires

  1. Modification textBox ignorée
    Par Nenad dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/10/2011, 18h42
  2. [WD15] Modification de l'analyse ignorée
    Par anner974 dans le forum WinDev
    Réponses: 12
    Dernier message: 28/06/2011, 16h31
  3. SVN - Ignorer les modifications d'un fichier
    Par mioux dans le forum Outils
    Réponses: 0
    Dernier message: 12/01/2011, 10h00
  4. Visual ignore la modification dans un header
    Par olizit dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 30/07/2007, 10h32
  5. modification d'un fichier dfm d'un autre projet
    Par zoheir13 dans le forum Delphi
    Réponses: 17
    Dernier message: 25/04/2007, 19h55

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