Olen tässä opetellut SDL_ttf:n käyttöä ja olen saanut aikaiseksi koodin jonka pitäisi kirjoittaa tekstiä näytölle. Ongelmaksi muodostuu se että 'TTF_RenderText_Solid' -funktio lopettaa ohjelma mystisellä virhekoodilla: -11 .
Tietäisikö kukaan mitä tuo kyseinen virhekoodi merkitsee ja miten sen voisi korjata? :)
Öh... TTF_RenderText_Solid palauttaa SDL_Surface-pointterin. Tumpelo jo tuossa tekikin varsin hyvän funktion sen käyttämiseen, varsinkin, kun siitä korjaa sen ainokaisen pienen virheen (ohjeetkin annettiin jo): https://www.ohjelmointiputka.net/keskustelu/
Teidän että se funktio palauttaa sen SDL_Surface pointterin. :)
Ongelma on se että kun funktiota kutsutaan, ohjelma sulkeuttuu virhekoodilla -11 jota minä en itse ole määrittänyt palautettavaksi missään kohtaan joten se tulee funktiosta... :I
Testasin tuota Tumpelon fuktiota mutta taas ohjelma sulkeutuu ja palauttaa virhekoodin -11 kun sitä 'TTF_RenderText_Solid' -funktiota kutsutaan.
No olisit heti sanonut. Ensimmäisestä ymmärtää, että olet ottanut san palautusarvon int-muuttujaan ja ihmettelet, miksi se on -11.
Jos laittaisit koodisi jonnekin, olisi helpompaa. Mutta ensiksi tarkista, että olet alustanut kirjaston ja ladannut fontin oikein.
Pastasin koodin: http://paste.dy.fi/?
Tulin vielä tarkastelleeksi tuota debuggeria lähemmin ja huomasin että siellä on tämönen teksti:
First-chance exception in Sdl_harjotukset.exe (SDL_TTF.DLL): 0xC0000005: Access Violation.
Eikös tuo tarkoita että tiedosto on varattu tai jotain sinnepäin?
Painun tästä pehkuihin ja tarkastelen asiaa huomenna lisää. Öitä! :)
EDIT:
Unohdin sanoa vielä että tuossa koodissa on käytössä se tumpelon funktio. vanha koodi on laitettu kommenttitageilla 'käyttämättömäksi'.
Latautuuko fontti varmasti?
Bingo! Fontti ei lataudu! seuraava kysymys lienee MIKSI se ei lataudu?
Ehkäpä siksi, että tiedostoa ei ole olemassa? Katso, mitä SDL_GetError sanoo, eli printtaa se vaikka johonkin tiedostoon.
Fontti on olemassa ja TTF_GetError sanoo että tiedostoa ei voi avata (TTF_OpenFont: Couldn't open Fonts\matrix.ttf).
EDIT: Kun käynnistin ohjelman kansiosta (en IDE:stä) niin alkoi toimimaan (matrix fontti ei kyllä tulostu oikein mutta arial pelittää)!! Mistäköhän tämä johtuu? Käytössä on VC++ 6.0.
Laita siihen sitten koko tiedostopolku, tai kopioi tiedosto ohjelman omaan kansioon ja käytä sieltä.
Koko tiedostopolun laittaminen ei ole kauhean toimivaa jos tiedostoja siirretään. Samaan kansioon laittaminen (ainakin VC++:n IDE:ssä) tuottaa saman tuloksen kuin se että fontti on eri kansiossa.
Mitä tekemistä VC++:n IDEllä on tiedoston sijainnin kanssa?
Tarkoitan sitä että kun siinä IDE:ssä käännetään ja ajetaan ohjelma, antaa se ohjelma sen tiedoston avaus errorin. Kun taas käynnistän ohjelman suoraan kansiosta, kaikki pelittää. näinhän sen saisi toimimaan mutta on aika rasittavaa kääntää ohjelma ja sitten alkaa avaamaan sitä tiedostosta. :(
Säädä projektin asetuksista ohjelman työkansio kohdalleen.
Tarkoitatko tätä kohtaa TÄSSÄ??
Jos tuota tarkoitit niin eikös tuossa ole kaikki oikein jos fontit ovat hakemistossa ....\sdl_harjotukset\Debug\Fonts ?? :I
Ei, vaan se alapuolella oleva Working Directory. Laitat siihen haluamasi juurikansion. Yleensä se muistaakseni on oletuksena Debug-kansion yläkansio, eikä se ole lainkaan huono paikka. Tai mieluummin tee aivan uusi kansio ohjelman tiedostoja varten.
Nyt sain toimimaan!! Kiitos paljon avusta! :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.