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 :

EOutOfResources - Ressources système insuffisantes


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Par défaut EOutOfResources - Ressources système insuffisantes
    Bonjour,

    Dans mon application, je génère un BMP qui peut atteindre 1500x1500 pixels.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    bmp = new TBitmap();
    bmp->Width = 1500;
    bmp->Height = 1500;
    bmp->PixelFormat = pf24bit;
    //....
    bmp->SaveToFile("monfichier.bmp");
    delete bmp;
    Il arrive que lors du SaveToFile, j'obtienne une exception "EOutOfResources - Ressources système insuffisantes". Pourtant, à ce moment là, mon exécutable n'occupe que 44 Mo en mémoire, et une image de 1500 x 1500 pixels n'a rien d'excessif...

    A quoi cela est-ce du et comment le contourner ??

    Merci pour votre aide !

  2. #2
    Membre éclairé Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Par défaut
    A noter que cela ne se produit pas forcément lors de la génération du 1er bitmap, mais au bout d'un certain nombre. J'ai vérifié mes new/delete, il n'y a pas de souci de ce côté là, je les détruis bien au fûr et à mesure...

  3. #3
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Salut, essai dans cet ordre avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    bmp = new TBitmap();
    bmp->PixelFormat = pf24bit;
    bmp->SetSize(1500, 1500);
    //....
    bmp->SaveToFile("monfichier.bmp");
    delete bmp;

  4. #4
    Membre éclairé Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Par défaut
    Merci pour le conseil, il faut donc mettre pf24bits avant de définir la taille ?
    Et SetSize est essentiel ? Car je ne dispose pas de cette fonction dans ma classe TBitmap de BCB6 !

  5. #5
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut
    Citation Envoyé par benj63 Voir le message
    Merci pour le conseil, il faut donc mettre pf24bits avant de définir la taille ?
    Je crois que oui
    Citation Envoyé par benj63 Voir le message
    Et SetSize est essentiel ? Car je ne dispose pas de cette fonction dans ma classe TBitmap de BCB6 !
    Si tu utilises les propriétés Width et Height alors SetSize va être appelé deux fois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TBitmap.SetHeight(Value: Integer);
    begin
      SetSize(FImage.FDIB.dsBm.bmWidth, Value);
    end;
     
    procedure TBitmap.SetWidth(Value: Integer);
    begin
      SetSize(Value, FImage.FDIB.dsbm.bmHeight);
    end;
    Selon moi c'est mieux d’appeler la méthode qu'une seule fois.

  6. #6
    Membre éclairé Avatar de benj63
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Mai 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 207
    Par défaut
    J'ai suivi tes conseils mais malheureusement cela ne résout pas mon problème... L'exception apparaît encore + rapidement si je lance mon application avec Codeguard... y'aurait-il une fuite mémoire ailleurs ??

    Pourtant en mémoire mon application ne nécessite que 48 Mo, BCB prend 100 Mo et il me reste + de 800 Mo de libre...

    Je vais tenter d'extraire le bout de code générant un bmp dans un prog à part pour voir...

Discussions similaires

  1. Ressources système insuffisantes
    Par aidonsnous dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/01/2014, 19h19
  2. Réponses: 1
    Dernier message: 12/07/2012, 16h59
  3. Ressources systèmes insuffisantes
    Par Guigsounet dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 13/12/2011, 10h48
  4. Réponses: 5
    Dernier message: 11/05/2011, 10h02
  5. Ressources système insuffisantes
    Par tedparker dans le forum Access
    Réponses: 3
    Dernier message: 27/09/2006, 11h56

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