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

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

11

15.05.2013, 22:57

MGBeginner du hast recht es gehört andersherum aber leider lag da nicht der Fehler. ;(
Aber trotzdem Danke! :D


Der Fehler lautet:

Quellcode

1
Unbehandelte Ausnahme bei 0x74d643f9 in SDL_Game 3.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xcccccccc.

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

MGBeginner

Frischling

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

12

15.05.2013, 23:49

Und der Fehler liegt wirklich in der Zeile 36 ? Hast du geschaut, dass du TTF_RenderText_Blended() auch wirklich keinen NULL-Zeiger bei dem Font übergibst ?

BTW: Die Zuweisungen von XPos und YPos sind auch falsch herum, wird mit dem Fehler aber auch nichts zu tun haben !

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

13

16.05.2013, 00:04

Ich lade doch FreeSans.tff bzw. Arial.tff in das Font dann ist es doch nicht Null!?

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

14

16.05.2013, 06:52

Zu dem Problem kann ich nichts sagen, aber für Dein eigenes Wohl solltest Du soetwas dringend vermeiden:

Quellcode

1
2
3
4
if( m_bFreeSans == true )
   ...;
else if( m_bFreeSans == false)
   ...;

Wirklich, sowas kann Dir super schöne Bugs erzeugen, wenn Du da nur den kleinsten Fehler machst.
Die deutlich robustere und vor allem übliche Variante lautet:

Quellcode

1
2
3
4
if( m_bFreeSans )
   ...;
else
   ...;
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Saik0

Treue Seele

Beiträge: 171

Beruf: Anwendungsentwickler

  • Private Nachricht senden

15

16.05.2013, 10:48

Ich lade doch FreeSans.tff bzw. Arial.tff in das Font dann ist es doch nicht Null!?

1) im Debugger steht auch, dass das Font nicht null ist?
2) Was gibt denn TTF_GetError() aus?
3) Stimmt der Pfad zu den Fonts?
4) Welche SDL version verwendest du? Kann gut sein, dass es bei einer SDL Version Fehler mit TTF gibt.

Ansonsten siehts so aus, dass etwas beim Laden des Fonts schief läuft. Du rufst dann g_pFramework->Quit (); auf. Welches SDL beendet und dann dein Text Surface nicht mehr da ist, wenn du deinen Text rendern willst. Dann entsteht wohl ein toter Pointer, den du dann an die blend methode übergibst. Kenne mich mit SDL nicht aus aber das ist nur eine Vermutung.

Swoerm

Alter Hase

  • »Swoerm« ist der Autor dieses Themas

Beiträge: 451

Wohnort: 127.0.0.1

  • Private Nachricht senden

16

16.05.2013, 15:44

@BlueCobold
Ich habe deinen Ratschlag beherzigt und mach das jetzt so wie du es mir empfohlen hast. Ich wäre nur froh wenn du mir den Unterschied erklären könntest.

@Saik0
1) Das Font ist nicht 0
2) TTF_GetError() gibt leider nichts aus
3) Der Pfad stimmt (sonst würde TTF_GetError() rummeckern)
4) Die Versionen sind kompatibel da ich mit diesen Versionen bereits andere SDL Anwendungen geschrieben habe

Ich wüsste nicht wieso die SDL sich nach dem Laden der Fonts beenden sollte da die Fonts ja richtig geladen werden.

Danke das ihr euch Mühe gebt! :thumbsup:

C-/C++-Quelltext

1
2
    /* Keep the compiler happy */
    return(0);

MGBeginner

Frischling

Beiträge: 81

Wohnort: Limburg

  • Private Nachricht senden

17

16.05.2013, 19:55

Also ich bin immer noch der Meinung, dass da einer deiner Zeiger ungültig ist. Wirf doch nochmal den Debugger an und achte gewissenhaft auf alle Zeiger. Was mir gerade noch so auffällt : Wenn ich das richtig sehe, ist das keine Konsolenanwendung oder ? Wo bitte soll denn da die Fehlermeldung kommen ? In dem von der SDL erzeugten Fenster wird durch cout nix ausgegeben, dafür brauchst du ein Konsolenfenster. Wenn du kein Konsolenfenster hast, kommt auch keine Fehlermeldung, eben auch nicht im Fehlerfall. So ist es bei mir zumindest.

Werbeanzeige