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 :

Fichier *dfm non chargeable, pourquoi ?


Sujet :

C++Builder

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut Fichier *dfm non chargeable, pourquoi ?
    Bonjour,
    j'ai écrit des programmes avec des versions antérieures de C++ Builder.
    Actuellement j'utilise la version XE6.

    J'ai constaté que pour certains de ces anciennes sources des programmes la fenêtre où sont visibles les différents composants, TButton, TLabel, etc… n'apparaissait pas.
    Cela n'empêchait pas la compilation, mais il est évidemment impossible de faire certaines modifications.

    J'ai remarqué que cela se produisait lorsqu'il y avait dans le fichier *.dfm, qui est un fichier du type "Texte", des instructions telles que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Picture.Data = {
          055449636F6E0000010008003030100001000400680600008600000020201000
          01000400E8020000EE060000101010000100040028010000D609000030300000
          01000800A80E0000FE0A00002020000001000800A8080000A619000010100000
          ..........}
    Est-il possible de remédier à cet état de fait ?

    Merci
    Gilbert PASQUALINI

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Je travaille avec xe et xe6

    Pour moi c'est très difficile à répondre parce que
    • S'il y a pas une parfaite concordance entre les données du DFM et les attributs publiés, une exception est lancée à la création de la form (pendant l’exécution)
    • S'il y a des propriétés qui ne sont pas correctes pour un ui (bouton, label, ....), C++ Builder te demande pendant la sauvegarde [ou à l'ouverture] de ta form de les supprimer ou de les conserver
    • Pour ce genre d'ui natif (bouton, label, ....), je ne pense pas qu'Embarcadero ait rajouté des propriétés de visibilité depuis: il y a déjà enabled, visible et transparent


    Et j'ai vérifié: pour une TImage tu as toujours dans le DFM Picture.Data = { ... }.

    Pour l'instant, le seul truc que je vois, c'est de refaire tous tes uis et/ ou de supprimer toutes les images (si tu penses que c'est cela qui pose problème)
    et éventuellement faire une comparaison dans le DFM entre avant et maintenant (peut-être que soit une propriété a été écrite et pose problème soit une propriété est manquante)

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Au lancement, il y a le message :
    "Erreur à la création de la forme : Sélection incorrecte".

    Je clique sur Ok et ne s'affichent que les fichiers *cpp et *h.

    La compilation se fait correctement.

    Est-ce dans le fichier *.dfm qu'il faut, avec un éditeur de texte, supprimer les images ?
    Gilbert PASQUALINI

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Donc si l'IDE refuse de prendre ton DFM dans le projet c'est bien un problème de syntaxe (du moins je le pense)

    Un problème d'héritage devrait être signalé par l'IDE (ce sont tous les objets inherited au lieu d'object *)

    Il faudrait refaire toutes les form entièrement Ou à moins que tu arrives à voir avec 1 ou 2 form refaites ce qui pose problème dans le DFM


    *:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    inherited log_in_frame_fr: Tlog_in_frame_fr
      inherited button_new_site: TJvTransparentButton
        Caption = 'Cr'#233'er un site'
      end
      inherited button_log_in: TJvTransparentButton
        Caption = 'Se Connecter'
      end
      inherited button_quit: TJvTransparentButton
        Caption = 'Quitter'
      end
    end

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Merci.
    J'ai chargé dans XE6 les copies des sources d'un programme dont les composants n'étaient pas affichés.
    Ils ont été affichés !
    J'ai fermé XE6, l'ai relancé et rechargé les mêmes sources.
    Les composants n'ont plus été affichés !!
    Je n'y comprends plus rien…

    Lorsque j'en aurai le courage, je réécrirai le programme en ne conservant que les fichiers .cpp et .h.
    Gilbert PASQUALINI

  6. #6
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Citation Envoyé par Pasqualini Voir le message
    J'ai remarqué que cela se produisait lorsqu'il y avait dans le fichier *.dfm, qui est un fichier du type "Texte", des instructions telles que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Picture.Data = {
          055449636F6E0000010008003030100001000400680600008600000020201000
          01000400E8020000EE060000101010000100040028010000D609000030300000
          01000800A80E0000FE0A00002020000001000800A8080000A619000010100000
          ..........}
    Le Picture.Data est un dump hexadécimal de l'image, par exemple un BMP ou un JPEG. Mais dans ton cas il semble que ce soit un TIcon (5449636F6E = "TIcon" en hexa). Donc a priori un objet natif C++ Builder. Ça me semble un peu étrange, pour peu que le format du TIcon change, ça casse la compatibilité.

    Je te conseille d'essayer de changer le contenu du Picture.Data par un objet standard, par exemple un petit fichier BMP (tu te crée une TForm bidon avec juste un objet graphique et une BMP, et tu copie-colles la partie hexa dans la Form que tu n'arrives pas à charger).

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Points : 242
    Points
    242
    Par défaut
    Merci pour cette suggestion.
    Je vais essayer.
    Gilbert PASQUALINI

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/12/2005, 13h40
  2. Fichiers .asp non reconnus
    Par zorba49 dans le forum ASP
    Réponses: 5
    Dernier message: 13/09/2005, 09h49
  3. probleme avec un fichier .dfm
    Par lestat1859 dans le forum C++Builder
    Réponses: 5
    Dernier message: 31/08/2005, 18h02
  4. Fichier orapwd non valide
    Par ariesnojf dans le forum Oracle
    Réponses: 3
    Dernier message: 12/07/2005, 19h36
  5. Prob fichier necessaire non installé...help pliz!!!
    Par Prima.broots dans le forum DirectX
    Réponses: 5
    Dernier message: 16/01/2005, 14h57

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