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 933
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 933
    Points : 15 380
    Points
    15 380
    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.

  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 561
    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 561
    Points : 3 955
    Points
    3 955
    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.

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 678
    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 678
    Points : 7 093
    Points
    7 093
    Par défaut
    Une solution pourait être de stocker les images en ressources, et de les charger au démarrage.

  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 : 55
    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 457
    Points
    28 457
    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 ?

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 665
    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 665
    Points : 25 459
    Points
    25 459
    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

  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 678
    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 678
    Points : 7 093
    Points
    7 093
    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.


  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 665
    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 665
    Points : 25 459
    Points
    25 459
    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

  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