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 :

[Delphi 2010] Taille d'un fichier DFM


Sujet :

EDI Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut [Delphi 2010] Taille d'un fichier DFM
    Bonjour

    J'ai une forme avec plus de 570 composants graphiques (que des dérivés de Timage)

    Lorsque je j'essaye de l'enregistrer après modification, j'ai un message d'erreur mémoire insuffisante.

    Le fichier dfm pèse 104 Mo.
    J'ai 3Go de mémoire, le tout sous XP.

    Des Pistes ?

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 731
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 731
    Points : 15 136
    Points
    15 136
    Par défaut
    Yep !
    Citation Envoyé par dlambert Voir le message
    Bonjour

    J'ai une forme avec plus de 570 composants graphiques (que des dérivés de Timage)

    Lorsque je j'essaye de l'enregistrer après modification, j'ai un message d'erreur mémoire insuffisante.

    Le fichier dfm pèse 104 Mo.
    J'ai 3Go de mémoire, le tout sous XP.

    Des Pistes ?
    Ce n'est pas parce que ta machine a 3 gig's que les programmes ont le droit de tout utiliser...
    Il y a des limites, et là, on dirait que tu les as atteintes

    Je ne pourrai pas t'aider plus, je n'ai pas D2010, et une forme de 104 Mo ça me semble hallucinant : chaque composant contient une image ?
    Faudrait peut-être les charger au lancement du prog plutôt que dans l'IDE, enfin, à voir.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 559
    Points : 3 949
    Points
    3 949
    Par défaut
    Salut

    J'ai eu des soucis avec D7 sur des fenêtres qui comportait de nombreuses images(boutons, fond d'écran, "guirlandes"...), c'est pénible : compilations qui échouent ...

    Il semblerait que Delphi ne soit pas trop à l'aise avec de telles fenêtre, compmele dit Jipété, essaies dans la mesure du possible de t'orienter vers un chargement à l'exécution.

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Une solution pourait être de stocker les images en ressources, et de les charger au démarrage.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  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 dlambert Voir le message
    Bonjour

    J'ai une forme avec plus de 570 composants graphiques (que des dérivés de Timage)

    Lorsque je j'essaye de l'enregistrer après modification, j'ai un message d'erreur mémoire insuffisante.

    Le fichier dfm pèse 104 Mo.
    J'ai 3Go de mémoire, le tout sous XP.

    Des Pistes ?
    ok, delphi est un peu léger sur ce coup là...mais tu ne penses pas avoir la main lourde ne même temps ? quel est la taille et le format de ces 570 images ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    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
    Je vote aussi pour les images en ressources !
    Cela permettra qu'elle soit aussi réutilisable dans le programme et pas juste pour cette fenêtre, surtout si il y a des duplications d'icones ou autres

    Il faut penser que si tu as une DFM de 104Mo d'image, cela va donner un TRES GROS EXE
    Que cela soit Image dans DFM ou Image dans Ressources !
    Un EXE de 100Mo est long au démarrage !
    Pour les grosses images de fond, il serait préférable de les stocker dans des fichiers séparés, si tu es parano, un zip avec mot de passe pour éviter que l'on touche à tes images
    Pense que tu peux aussi utiliser le format DFM librement avec TStream.ReadComponent ...

    Sinon, le TImage est un TGraphicControl mais son Canvas lui utilise un Handle, cela beaucoup fait 570 contrôles !

    Il y a peut-être une saturation de DC, en fait le message "mémoire insuffisante" devrait être compris comme "nombre de handle maximum atteind"

    Ton écran affiche tout ça en même temps ?
    Oui, un tas de petite image, genre sprite -> TPaintBox !
    Non, tu joue avec Visible d'un groupe de TImage pour cacher\afficher genre pour faire un système d'onglet fait à la main ou afficher des images selon un contexte
    Dans ce cas, fait des TForm ancrée via la propriété Parent ou alors la TPaintBox

    Pense que tu peux stocker aussi cela dans une TImageList au lieu d'un tas de TImage et gérer le dessin avec une TPaintBox couplé à un double buffer
    Ces buffer pouvant être calculé alternativement dans un thread
    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

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Merci à tous.

    C'est un synoptique de supervision de process.
    Plein de tuyaux, de vannes, de tubes, de pompe, de compresseurs...

    D'abord chargé en dynamique, impossible, c'est un synoptique et l'ajustement au pixel près ne peut être fait qu'en design time.

    Le problème c'est que les composants renvoient une image 200x200 même si la dimension est 30x30.
    Donc un composant = environ 200Ko

    Il faut savoir que l'IDE ne sis pas modifier les propriétés d'un create une fois celui ci posé.

    Contournement.
    dans les property, change (taille, marche, arret, mode), j'ai redimensionné le bitmap à sa réelle résolution.
    Je l'ai fait pour 2 composants sur 7.

    Un peu galéré, mais je suis passé de 104 Mo à 50 Mo

    Si je fait les 5 autres, peut être 3-10 Mo au lieu de 50

    Je suis prêt à échanger sur le sujet.
    Merci à tous.

  8. #8
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Citation Envoyé par dlambert Voir le message
    D'abord chargé en dynamique, impossible, c'est un synoptique et l'ajustement au pixel près ne peut être fait qu'en design time.
    Je ne comprend pas pourquoi.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  9. #9
    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 dlambert Voir le message
    C'est un synoptique de supervision de process.
    Plein de tuyaux, de vannes, de tubes, de pompe, de compresseurs...
    Je vois bien, j'ai un projet similaire de superviseur

    Citation Envoyé par dlambert Voir le message
    D'abord chargé en dynamique, impossible, c'est un synoptique et l'ajustement au pixel près ne peut être fait qu'en design time.
    Dans le projet dont je m'occupe, les plans de supervision sont configurés en fonction du site utilisateur,
    il y a un mode de construction du plan, ressemblant à un Designer Delphi limité au éléments métiers qui sont supervisés
    Idem, il y a une gestion de position basique Left, Top, H, W ... cela ressemble presque à une feuille PowerPoint simplifé à l'extrème en terme de Design
    Le plus complexe à manier c'est le Polygon que l'on utilise donner l'illusion d'une 3D isométrique avec une image de fond faite sous AutoCAD

    le Tout est stocké dans plusieurs tables de la DB

    Certains clients configurent leur plan eux même en associant les points de supervision aux périphériques gérés par notre logiciel.
    D'autres clients passent par une prestation de déploiement

    Ensuit il y a un mode Run qui affiche les plans

    disons qu'il plan contient au grand max 200 item car après on ne s'y retrouve plus, en général, mes points font 32x32,
    si l'on en met 200 genre 20x10, on se retrouve avec une surface occupée de 640x320,
    si l'on rajoute en plus des libellés, des formes géométriques
    et souvent les points ne sont pas tous collés pour une question de lisibilité, on arrive avec la barre d'outil, la barre de status, à écran de 800x600 ou 1024x768 ce qui est tout à fait correct sur vieux LCD en plein écran

    un plan peut invoquer un autre plan plus détaillé,
    la supervision gère des groupes d'animations sur le plan,
    ainsi l'utilisateur à un plan principal qui se colorise, clignote, ... et il peut naviguer de plan en plan pour avoir plus de détail sur l'anomalie

    Des outils comme TMS Script Studio ou Greatis Designer permettent de faire son propre Designer intégré à son appli
    Mon prédecesseur à fait son propre Designer, juste des Draw et des Messages Windows pour gérer le glisser-déplacer
    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

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 36
    Points : 29
    Points
    29
    Par défaut Résolu
    Bon

    Je fais des redimensionnement en design time et mon DFM viens de passer à 20Mo.

    J'ai encore quelques composants à modifier, mais pour l'instant ça restera en l'état

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

Discussions similaires

  1. Utilisation d'un fichier ressources avec Delphi 2010 ?
    Par Laskar dans le forum Débuter
    Réponses: 8
    Dernier message: 20/10/2010, 09h18
  2. archivage des fichiers en delphi 2010
    Par AlfredKr dans le forum EDI
    Réponses: 2
    Dernier message: 16/04/2010, 03h19
  3. Les limite du fichier DFM delphi
    Par attowlay dans le forum Langage
    Réponses: 4
    Dernier message: 01/04/2008, 20h13
  4. fonction réduisant la taille d'un fichier
    Par Harry_polin dans le forum C
    Réponses: 22
    Dernier message: 27/11/2003, 13h56
  5. [VB6] [Réseau] Récupérer la taille d'un fichier avec inet
    Par pcpunch dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 20/02/2003, 21h38

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