Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

1

11.09.2015, 17:28

[C++ | SFML] Flüchtigkeitsfehler beim laden eines Fonts?

Hallo Leute,

zurzeit programmiere ich (im Team) ein Spiel. Als Startmenü brauchen wir Buttons, um die Gamestates zu wechseln. Als Beschriftung der Buttons möchten wir ein anderes Font verwenden, als das, welches wir für alle anderen Texte verwenden. Hier der Codeausschnitt:

.hpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Button : protected Gui
{
public:
    // ...

private:
    // ...

    sf::Font m_Font;

    sf::Text txtStartButton;
    sf::Text txtOptionButton;
    sf::Text txtExitButton;

};


.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// ...

void Button::loadTextes()
{
    if (!m_Font.loadFromFile("assets/fonts/sserife.fon"))
        throw std::runtime_error("Konnte das Font nicht laden.");
    else
        setTextes();
    
}

void Button::setTextes()
{
    txtStartButton.setFont(m_Font);
    txtOptionButton.setFont(m_Font);
    txtExitButton.setFont(m_Font);

    txtStartButton.setCharacterSize(10);
    txtOptionButton.setCharacterSize(10);
    txtExitButton.setCharacterSize(10);

}
// ...


Wenn ich es ausführe, dann bekomme ich den std::runtime_error. Was habe ich falsch gemacht?
Vielen Dank im Voraus :)
PS: Ein Screenshot von den Ordner ist im Anhang
»cojo2015« hat folgendes Bild angehängt:
  • Ordner.PNG

2

11.09.2015, 17:59

Das typische Problem mit dem Arbeitsverzeichnis des Programms beim starten aus VS heraus ;) :whistling:

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

3

11.09.2015, 19:20

Um Roflos Aussage weiter zu erklären. Wenn du mit Visual Studio ein C++ Projekt startest dann ist das Startverzeichnis (das zu dem du deine Pfadangaben relativ machst) das in welchem sich normalerweise deine Codedateien befinden. Startest du die kompilierte Anwendung hinterher extern, also nicht aus Visual Studio heraus, dann ist das Startverzeichnis das deiner Exe Datei. Was du machen kannst ist die Dateien deinem Visual Studio Projekt selbst mit zu geben und passend in der Verzeichnis Struktur abzulegen. Dann sagst du Visual Studio er soll die Dateien (also zum Beispiel die Fonts) am Ende mit ins Debugverzeichnis legen. Oder du machst es dir kompliziert und hast die Fonts etc jeweils ein mal im Projektverzeichnis als auch im Debug Ordner (Im Falle von Releasebuild natürlich im Release Ordner).
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

4

12.09.2015, 01:24

Erstmal danke für die Antworten :) , aber das Problem ist, dass ich auch das andere Font exakt so lade, nur, dass der Name halt anders ist. Und genau das habe ich gestern nicht verstanden :huh:

Tobiking

1x Rätselkönig

  • Private Nachricht senden

5

12.09.2015, 02:13

Es könnte sein das SFML das Format nicht kann. Laut http://www.sfml-dev.org/documentation/2.…49a85571c0f3fd1 wird zwar .FNT unterstützt aber .FON nicht.

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

6

12.09.2015, 02:52

Es könnte sein das SFML das Format nicht kann. Laut http://www.sfml-dev.org/documentation/2.…49a85571c0f3fd1 wird zwar .FNT unterstützt aber .FON nicht.
Ja das stimmt :) , aber wenn ich mein anderes Font angebe, bekomme ich auch diese Fehler ...

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

7

12.09.2015, 08:21

Du solltest dich zu allererst in der Doku der SFML informieren, welches Format der Font haben sollte und welche weiteren Fehlermeldungen SFML bei diesem Problem ausgibt. Um zu testen, ob die Font Datei einfach nicht gefunden wird, falls es dazu tatsaechlich keine Fehlermeldung gibt (was ich bezweifle) macht es Sinn diesen in ein ganz simples Verzeichnis zu packen und das dann genau so anzugeben, etwa c:\test\a.fnt.

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

8

12.09.2015, 09:40

Auf der Doku-Seite von SFML steht : "..., Windows FNT, ...". Heißt das, dass ich alle Fonts aus dem Ordner "Fonts" aus "C:\Windows\Fonts" laden kann?
PS: Das erste Font (nicht im Codeausschnit) ist ein *.ttf und er kann das laden. Sobald ich den Namen des ersten Fonts angebe um es zu laden (dort im Codeausschnitt), dann bekomme ich auch diese Fehlermeldung. Ich hoffe ihr konntet mir folgen ...

Werbeanzeige