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

Contribuez Delphi Discussion :

Delphi et les DFM


Sujet :

Contribuez Delphi

  1. #1
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut Delphi et les DFM
    Bonjour,

    Je viens de publier un article sur un usage original des DFM de Delphi.

    Le code est compatible Delphi 6 / Delphi XE2

    Delphi et les DFM
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Dans un projet, je stockais des bout juste la section d'un panel sous format DFM que j'affichais via ReadComponent, ainsi selon le client, cela n'utilisait pas le même DFM, ainsi les DBEdit, DBCheckBox affichait pas les mêmes colonnes, la DB elle contenait tout donc bcp de colonne inutile
    3 Clients dont 3 fichier DFM, à l'origine un site PHP qui était à l'origine des données devait me fournir le DFM construit via Smarty+Template (le Directeur, un peu moqueur, l'avait surnommé le Projet X27) mais cela n'a jamais été codé (lol, le directeur l'avait prédit) donc je me tappais les modif des DFM à la mano, comme elle ne contenait pas de TForm et pas de .PAS, fallait que je bidouille si je voulais les modifier via l'IDE

    Heureusement il y avait DFM Editor, et tout un tas de DFM Edit comme celui de Olivier Dahan

    Je conservais le fichier sous format DFM et non en format binaire ressource, via ObjectTextToBinary pour la conversion ComponentToString et StringToComponent inspiré d'un exempde de l'aide D6

    Dans un autre projet, la DB aussi était variable, heureusement car bcp plus de client, entre 500 et 1500 colonnes (données médicales genre gêne, virus ...), chacun n'ayant quasiment rien en commun
    un XML décrivait les colonnes, un autre XML décrivait l'écran, puis un XSLT mélangeait tout ça pour créer une DFM, le DFM était stocké en DB
    Les XML était stocké aussi en DB et pouvait évolué dans le temps

    On a évoqué cela dans Gestion complète d'une TreeView: ajout de noeuds, records et sauvegarde du tout en sauvegardant le TTreeView sous forme de DFM via WriteComponent plus à la fin du fichier cela stockait une série de record sérialisé issu des Data, et inversement, reprise via LoadComponent et rétablissement des Data

    Le fichier BDS.dmt ou Delphi32.dmt de Utilisation des modèles de menu utilise aussi le format DFM, ils doivent l'utiliser plus souvent que l'on le croit
    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
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Si l'on remplace la ligne "{$R *.DFM}" du .pas par le contenu du .dfm, a t'on le même résultat au final ?
    PS : entre PT et SLT je ne sais pas lequel est le plus calé en Delphi.

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    $R ... c'est une directive pour le compilateur qu'il doit injecter une ressource dans l'exe
    peut-être avec une resourcestring, tu pourrais stocker une petite DFM mais ça serait pas très beau
    ne pas confondre avec $I qui injecte le fichier mentionné à l'endroit de la directive

    PS : Moi, je dirais que c'est celui qui a écrit un livre : Delphi 7 Studio
    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
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par peter27x Voir le message
    Si l'on remplace la ligne "{$R *.DFM}" du .pas par le contenu du .dfm, a t'on le même résultat au final ?
    non tu obtiendrais une erreur de compilation

    {$R ...} permet de lier une ressource à l'exécutable. Normalement c'est un fichier .RES (qui n'est pas propre à Delphi). Tu peux créer un .RES par compilation d'un script .RC avec BRCC32, ça permet d'inclure les différents types de ressource supportés par Windows (BITMAP, FONT, STRING, DIALOG...)

    Si le $R fait référence à un .DFM (ou .FMX pour FireMonkey), il est "compilé" (en fait converti du format texte au format binaire) et inséré comme ressource RT_RCDATA.

    Citation Envoyé par peter27x Voir le message
    PS : entre PT et SLT je ne sais pas lequel est le plus calé en Delphi.
    Moi évidemment mais Shai devient pas mauvais avec le temps...je me souviens de ses débuts, il a fait du chemin !
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    OK donc pas touche au $R !
    PT a écrit un livre, certes, mais combien d'encyclopédies Universadelphis sont inscrites en dur dans la ROM de SLT ?

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par peter27x Voir le message
    OK donc pas touche au $R !
    PT a écrit un livre, certes, mais combien d'encyclopédies Universadelphis sont inscrites en dur dans la ROM de SLT ?
    j'espère pour lui que c'est de la RAM, il ne faut jamais penser tout savoir sur un sujet

    J'adore me tromper, ça veux dire que j'apprend ! mais sur Delphi, c'est devenu assez rare
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    J'adore me tromper, ça veux dire que j'apprend ! mais sur Delphi, c'est devenu assez rare
    Tient cela me rappel une signature ... n'oubliez les plans cachés à l'intérieur des plans !
    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

Discussions similaires

  1. Réponses: 9
    Dernier message: 07/11/2005, 19h57
  2. Réponses: 2
    Dernier message: 30/10/2005, 14h38
  3. Delphi et les fichiers texte
    Par the watcher dans le forum Langage
    Réponses: 5
    Dernier message: 28/10/2005, 15h31
  4. [IB7][Delphi 7] Les Blobs
    Par kmsoft dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 20/11/2004, 18h13
  5. Delphi - récupérer les infos d'un utilisateur
    Par jlf dans le forum Débuter
    Réponses: 2
    Dernier message: 26/06/2004, 11h34

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