SDL ttf Problem



  • Und wie mach ich dass wenn ich keinen Text verwenden kann?

    MfG
    Stromberg



  • printf?



  • du hast doch ganz dick "ERROR!!!!!!!!!!!!!!11111111111" hingeschrieben. und dann returnst du mit code 23.
    Und bevor du das machst, gibst du aus, was die genannge Funktion zurückgibt.



  • Wie soll ich es den Ausgeben wenn ich nicht schreiben kann? Ich kann doch keine Schrift laden! --> Deshalb auch nicht Texte schreiben.

    MfG
    Stromberg



  • Du wirst doch wohl noch ein printf/std::cout<< auf die Konsole hinkriegen, oder? Oder zumindest in ein Logfile? Wenn nicht, würd ich mit dem Problem da mal pausieren und nochmal da anfangen, wo die Defizite sind... 🙄



  • Hallo

    Wenn du es gar nicht schaffst, füllst du einfach einen string und schaust ihn dir im Debugger an.

    chrische



  • chrische5 schrieb:

    Hallo

    Wenn du es gar nicht schaffst, füllst du einfach einen string und schaust ihn dir im Debugger an.

    chrische

    wenn er nichtmal auf die idee kommt, printf zu benutzen, wird er es auch nicht schaffen, den string in einem debugger zu betrachten 👍



  • Ich kann dass nur so machen, und da wird nix in die Konsole Ausgegeben:

    .....
    ......
    font = TTF_OpenFont("lazy.ttf",24);
    if(font == NULL)
    {
        cout << TTF_GetError() << "\n";
        return 1;
    }
    text = TTF_RenderText_Solid(font, "FUCK UP!", textColor);
    if(text == NULL)
    ......
    .....
    

    Ich könnt es höchstens noch in eine .txt auslesen. Vll. klappt ja dass? Oder wie hab ihr euch dass vorgestellt?

    MfG
    Stromberg



  • Stromberg schrieb:

    Ich könnt es höchstens noch in eine .txt auslesen. Vll. klappt ja dass? Oder wie hab ihr euch dass vorgestellt?

    mad_martin schrieb:

    Oder zumindest in ein Logfile?

    Ja, scheint so 😉

    Achja, und verwende bitte std::endl anstatt "\n".



  • Hallo

    Warum nimmst du nicht meine Lösung? Ohne Logfile und auch sonst sehr schnell gemacht.

    chrische



  • @chrische5
    Ich kann nich mitm Debugger umgehen 😞

    @mad_martin
    Warum "std::endl"?

    @all
    Wie kann ich eigentlich in SDL in die normale Konsole Texte, Werte....reinschreiben?
    Gibt es da gar keinen Weg?

    MfG
    Stromberg



  • Stromberg schrieb:

    @chrische5
    Ich kann nich mitm Debugger umgehen 😞

    Unbedingt lernen. Sonst kommst du nicht weit. Gutgemeinter Rat!

    Stromberg schrieb:

    @mad_martin
    Warum "std::endl"?

    std::endl deshalb, weil die neue Zeile je nach dem, auf welchem Betriebssystem du bist, nicht unbedingt mit "\n" erreicht ist. std::endl steht halt für endline, da sollte man das auch benutzen. Ist einfach sauberer so.

    Stromberg schrieb:

    @all
    Wie kann ich eigentlich in SDL in die normale Konsole Texte, Werte....reinschreiben?
    Gibt es da gar keinen Weg?

    MfG
    Stromberg

    Und wie meinst du das genau? Hast du eine Konsole neben dem SDL-Fenster oder nicht? Wenn ja, sollte std::cout<< reichen. Wenn nein, musst du das Ding als Konsolenanwendung kompilieren.



  • Stromberg schrieb:

    Warum "std::endl"?

    wenn du nur ein "\n" ausgibst, wird der text nicht unbedingt auf der konsole ausgegeben, es kann sein, dass noch gewartet wird, ob vielleicht noch mehr kommt, bevor man text ausgibt, um mehr in einem rutsch auszugeben.
    std::endl bewirkt das gleiche wie "\n" UND zwingt das programm, den Text sofort auszugeben. std::flush kannst du auch benutzen, das zwingt das programm auch, alles auszugeben (gibt aber kein "\n" aus).



  • Zur Konsole:
    Also es läuft bei mir nebenbei eine Konsole (wird halt geöffnet, wenn dass SDL Fenster startet).
    Aber bei std::cout wird irgendwie nix in die Konsole ausgegeben.
    An was könnte dass liegen?

    MfG
    Stromberg



  • Die SDL leitet die Ausgabeströme stdout und stderr standardmäßig in die Dateien stdout.txt und stderr.txt um. Deshalb bekommst du mit std::cout nie eine Ausgabe in die Konsole. Suche stattdessen im Verzeichnis, in dem du deine Executable ausführst nach diesen Dateien, die sollten den ausgegebenen Text enthalten.



  • Heinzelotto schrieb:

    Stromberg schrieb:

    Warum "std::endl"?

    wenn du nur ein "\n" ausgibst, wird der text nicht unbedingt auf der konsole ausgegeben, es kann sein, dass noch gewartet wird, ob vielleicht noch mehr kommt, bevor man text ausgibt, um mehr in einem rutsch auszugeben.
    std::endl bewirkt das gleiche wie "\n" UND zwingt das programm, den Text sofort auszugeben. std::flush kannst du auch benutzen, das zwingt das programm auch, alles auszugeben (gibt aber kein "\n" aus).

    Das war der andere Aspekt, warum man std::endl benutzen sollte und den ich vergessen hatte.



  • Der Fehler heißt: Library not initialized
    Sagt mir nicht viel jetzt, aber ich installier dann einfach die ttf Lib neu, vll. hab ich irgendwas falsch gemacht.
    Was würdet ihr machen?

    MfG
    Stromberg



  • Hallo

    Ich würde zuerst den Umgang mit dem Debugger lernen bevor ich weiter machen würde.

    chrische



  • Joa okay, wenn dass so wichtig ist sollte ich den Umgang mit einem Debugger wirklich lernen, kennt jemand eine gute Anleitung o.ä. dafür?

    PS:
    Ich hab nun auch den Fehler gefunden, ziemlich dummer Fehler:

    if(TTF_Init() == -1)
    {
        return 1;
    }
    

    MfG
    Stromberg



  • Hallo

    Vielleicht hilft dir das:

    http://magazin.c-plusplus.net/artikel/Debuggen mit VCPlusPlus6

    chrische


Anmelden zum Antworten