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

SDL Discussion :

Problème de mémoire dans ma fonction AfficherTexte.


Sujet :

SDL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Points : 23
    Points
    23
    Par défaut Problème de mémoire dans ma fonction AfficherTexte.
    Bonjour,
    Je viens aujourdh'ui pour vous demander un peu d'aide, car, en changeant mon IDE et mon nom de ma classe, ma fonction s'est mise à me donner des erreurs de compilation assez gênantes... Je cherche depuis 2 heures, je sature...

    Voici ma fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    void DisPlay::AfficherTexte(string texte, int taillePolice, int x, int y, int r, int v, int b)
    {
    	SDL_Rect position;
    	SDL_Surface *text;
    	TTF_Font *police = NULL;
    	if(r<0 || r>255)
    	{
    		r=0;
    		cout << "Valeur entrée pour le niveau de rouge invalide et remise à zéro..." << endl;
    	};
    	if(v<0 || v>255)
    	{
    		v=0;
    		cout << "Valeur entrée pour le niveau de vert invalide et remise à zéro..." << endl;
    	};
    	if(b<0 || b>255)
    	{
    		b=0;
    		cout << "Valeur entrée pour le niveau de bleu invalide et remise à zéro..." << endl;
    	};
    	SDL_Color couleur_finale = {r, v, b};
     
            police = TTF_OpenFont("DejaVuSans.ttf", taillePolice);
    	if(police != NULL)
    	{
    		text = TTF_RenderText_Blended(police, texte.c_str(), couleur_finale);
            	position.x = x;
            	position.y = y;
            	SDL_BlitSurface(text, NULL, screen, &position);
    		SDL_UpdateRects(screen, 1, &position);
    		TTF_CloseFont(police);
    		SDL_FreeSurface(text);
    	}
    	else
    	{
    		cout << "Impossible de charger la police d'écriture..." << endl;
    		TTF_CloseFont(police);
    		SDL_FreeSurface(text);
    	}
    }
    et l'erreur de compilation:

    ../DisPlay/DisPlay.cpp:225:37: attention : missing initializer for member ‘SDL_Color::unused’
    ../DisPlay/DisPlay.cpp: In member function ‘void DisPlay::AfficherTexte(std::string, int, int, int)’:

    Merci d'avoir déjà pris le temps de lire ce message,
    Hedbanging

  2. #2
    Membre expérimenté Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 623
    Points : 1 554
    Points
    1 554
    Par défaut
    Je ne connais pas le c++, néanmoins les membres SDL_Color sont des Uint8 (unsigned char).

    Si ça a pu t'aider...

    Edgar.
    On écrit "J'ai tort" ; "tord" est la conjugaison du verbre "tordre" à la 3ème personne de l'indicatif présent

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2012
    Messages : 16
    Points : 23
    Points
    23
    Par défaut Tout problème a une solution, même si on ne la comprends pas.
    Merci de ta bonne volonté mais apparement toutes mes erreurs de compilation se sont résolus, comme par magie, après que j'ai recompilé à la main les fichiers comme je le faisait avant...
    Ahlàlà, les aléas de l'informatique...

    PS: Je marque résolé.

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    TTF_OpenFont ne devrait pas se trouver dans une fonction d'affichage, mais dans une fonction d'initialisation (et pour fermer correctement, une fonction pour fermer la TTF).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

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

Discussions similaires

  1. Problème de libération de la mémoire dans une fonction
    Par ArnaudFu1 dans le forum Débuter
    Réponses: 2
    Dernier message: 23/02/2012, 16h21
  2. Réponses: 2
    Dernier message: 13/03/2007, 15h35
  3. problème d'update dans une fonction trigger (before)
    Par ctobini dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/09/2006, 17h08
  4. problème de variable dans une fonction
    Par K4trix dans le forum C
    Réponses: 9
    Dernier message: 06/07/2006, 09h38
  5. [PL SQL] Problème avec 'case' dans une fonction
    Par divail dans le forum Oracle
    Réponses: 14
    Dernier message: 13/03/2006, 15h50

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