Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [résolu] SFML 2.2 - sf::Text - setString("")  (Lu 7335 fois)

0 Membres et 3 Invités sur ce sujet

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
[résolu] SFML 2.2 - sf::Text - setString("")
« le: Janvier 18, 2015, 12:47:00 pm »
Bonjour,

Je suis passé de SFML 2.1 à la dernière mouture. J'ai une erreur à l'exécution que je n'avais pas avant:
#include <iostream>
#include <SFML/Graphics.hpp>

using namespace std;

int main()
{
    sf::RenderWindow app(sf::VideoMode(800,600,32),"sf::String manipulation");

    app.setVerticalSyncEnabled(true);

    sf::Font arial;
    if (!arial.loadFromFile("arial.ttf")) return -2;

    sf::Text text;
    text.setFont(arial);
    text.setString("");
    text.setPosition(200,300);

    while (app.isOpen())
    {
        sf::Event event;
        while (app.pollEvent(event))
       {
            if (event.type == sf::Event::Closed)  app.close();
        }

        app.clear(sf::Color::Blue);

        app.draw(text);

        app.display();
    }

    return EXIT_SUCCESS;
}
 

Le fait de mettre text.setString(""); fait planter l'application.

Le simple fait de déclarer
 sf::String s;
et de ne pas l'utiliser fait également planter l'application à la fermeture.

Que se passe-t-il ? Auparavant, l'on pouvait afficher un sf::Text comprenant une sf::String vide ce qui évitait des tests nombreux.

J'ai compilé SFML à partir des sources grâce à la dernière version mingw de Nuwen (11.6 avec GCC 4.8.2)
« Modifié: Janvier 25, 2015, 09:54:06 pm par virelio »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #1 le: Janvier 18, 2015, 07:37:55 pm »
Tu veux dire que setString("plop") ne fait pas planter ?
Laurent Gomila - SFML developer

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #2 le: Janvier 19, 2015, 09:51:05 pm »
Bonjour,

Tu veux dire que setString("plop") ne fait pas planter ?
Tout à fait, le programme plante si la chaine donnée en paramètre est vide. Ce comportement n'était pas celui que j'avais auparavant. (quelques heures à trouver pourquoi le programme qui tournait sans problème avant, plantait au deuxième écran...  :o)

D'autre part, si ma sf::String est construite sans être expressément initialisée avec une chaîne non vide, j'ai un plantage à la fermeture.

J'ai recompilé avec TDM... Idem !
« Modifié: Janvier 19, 2015, 09:55:54 pm par virelio »

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #3 le: Janvier 20, 2015, 11:13:48 pm »
chers utilisateurs de SFML 2.2

Avez-vous pu reproduire le plantage décrit avec le code fourni ?
Si ce n'est pas le cas, auriez-vous une idée du pourquoi ça plante chez moi ?

Merci


math1992

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
    • E-mail
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #4 le: Janvier 21, 2015, 01:53:19 am »
Tout fonctionnel nickel chez moi (j'utilise aussi mingw TDM). 

Peut être as-tu oublié de supprimer les headers / libs de l'ancienne version de SFML que tu utilisais.

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #5 le: Janvier 21, 2015, 03:32:09 pm »
J'ai contrôlé le "path" et supprimé l'ancien dossier SFML.
J'ai également modifié les chemins de recherche de CodeBlocks que j'utilise. Tout se passe nickel sauf dans le cas précisé.

Je vais tenter une réinstallation complète de mingw (troisième fois !) et une recompilation de SFML (Github).

J'ai l'habitude de compiler régulièrement SFML et de mettre mingw à jour... première fois que j'ai cette "issue"
  ???

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #6 le: Janvier 23, 2015, 11:11:06 pm »
Bonjour,

Nettoyage du PATH. Désinstallation/suppression de Cmake, SFML, Thor, Mingw
Réinstallation de MinGW (nuwen version 12.2)
Réinstallation de Cmake
Compilation de SFML
Compilation de Thor

Compilation et lancement de mon petit programme de test...
ça plante toujours ! :( >:(

Je compile via codeblocks... j'ai contrôlé les chemins de recherche... pour moi c'est ok...

Je sèche là !
« Modifié: Janvier 23, 2015, 11:14:55 pm par virelio »

math1992

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
    • E-mail
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #7 le: Janvier 24, 2015, 12:27:03 am »
Hum...

Pourrais-tu écrire le message d'erreur? Peut-être que celui-ci pourrais nous aider.

Aussi essaye de changer de compilateur et vois si l'erreur se reproduit.
« Modifié: Janvier 24, 2015, 12:28:54 am par math1992 »

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #8 le: Janvier 24, 2015, 11:48:33 am »
Bonjour,

Il ne s'agit pas d'une erreur à la compilation qui se passe sans même un warning que ce soit en mode release ou en mode debug (Je compile avec codeblocks et connais bien ce logiciel)

Le programme se lance "presque" ; à peine la fenêtre apparait-elle que j'ai le message "test_sfString.exe a cessé de fonctionner"

Si je remplace
text.setString("");
par
text.setString("plop");
le programme fonctionne normalement.

Je soupçonne sf::String car si je déclare
sf::String s("");
sans l'utiliser, j'ai le même plantage avec le même message à la fermeture.

J'ai le même comportement avec mingw issu de TDM...

Des avis ?

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #9 le: Janvier 24, 2015, 12:00:44 pm »
Voici un programme qui ne plante qu'à la fermeture (!)
#include <iostream>
#include <SFML/Graphics.hpp>

using namespace std;

int main()
{
    sf::RenderWindow app(sf::VideoMode(800,600,32),"sf::String manipulation");

    app.setVerticalSyncEnabled(true);

    sf::Font arial24;
    if (!arial24.loadFromFile("arial.ttf")) return -2;

    sf::String a("plop");
    a.clear();                     // voilà la feinte !
    sf::Text text;
    text.setFont(arial24);
    text.setString(a);
    text.setPosition(200,300);

    while (app.isOpen())
    {
        sf::Event event;
        while (app.pollEvent(event))
        {

            if (event.type == sf::Event::Closed)  app.close();
        }

        app.clear(sf::Color::Blue);

        app.draw(text);  // le text "vide" s'affiche (impossible à voir mais ça tourne)

        app.display();
    }

    //si je dé-commente la ligne suivante le programme ne plante plus à la fermeture
    //text.setString("plop");  

    return EXIT_SUCCESS;
}

On progresse (?)
« Modifié: Janvier 24, 2015, 12:21:49 pm par virelio »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #10 le: Janvier 24, 2015, 01:35:22 pm »
Est-ce que tu as réessayé la même chose (recompiler tout ça tout ça) mais avec SFML 2.1 ?
Laurent Gomila - SFML developer

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #11 le: Janvier 24, 2015, 02:52:32 pm »
Bonjour Laurent,

Non, mais le programme qui est à l'origine de ma recherche fonctionnait avec la dernière (?) version Github de SFML 2.1
Depuis, je suis passé à la nouvelle version de SFML et de GCC...

Comment est détruit sf::String (destructeur par défaut si je ne m'abuse) cela pourrait-il venir de là ?

Tu ne sembles pas avoir changé sf::String dernièrement, donc je ne comprends pas. Peut-être GCC, mais je compile avec l'option std=c++11, comme avant...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #12 le: Janvier 24, 2015, 03:15:05 pm »
Pas la peine de chercher du côté de SFML, c'est un problème d'environnement. Maintenant, étant donné que tu as tout recompilé, je ne sais pas quoi te dire. Peut-être certaines DLLs (de SFML ou du compilateur) qui traînent dans le PATH. Je ne sais pas. Mais ce qui est sûr c'est que ça ne vient pas de SFML.
Laurent Gomila - SFML developer

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
[Résolu] SFML 2.2 - sf::Text - setString("")
« Réponse #13 le: Janvier 24, 2015, 04:48:41 pm »
Gros nettoyage ! recherche et suppression de *sfml*.*...

re-re-compilation de l'ensemble avec TDM et...

RÉSOLU ! (mais je ne sais pas comment...) sans doute une vieille dll...

En tout cas, merci de votre aide.

ps: comme je suis joueur, je vais recompiler avec nuwen C++... pour voir

virelio

  • Newbie
  • *
  • Messages: 42
    • Voir le profil
Re : SFML 2.2 - sf::Text - setString("")
« Réponse #14 le: Janvier 24, 2015, 07:05:04 pm »
Nettoyage et recompilation avec la distribution de Nuwen = plantage. Comme la distribution inclus d'autre parties (boost, freetype2, ...), j'ai peur que le conflit ne viennent de là.

Je suis retourné sur TDM (ça marche) et vais inclure les lib de boost que j'utilise à côté...

Fin de l'histoire (pour le moment  ::) )