Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
fowly JLI'ler
Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
Verfasst am: 10.04.2004, 17:03 Titel: Textur löschen |
|
|
Hi,
ich weiß, ich nerve euch schon wieder mit meinen Amateurproblemen, aber ich komme einfach nicht weiter.
Ich habe den ResourceManager aus dem Buch um eine Funktion DeleteTexture(); (Jeder kann sich den Sinn der Funktion mal überlegen) bereichert. Das Problem ist, dass das Programm an der Stelle wo die Funktion aufgerufen wird manchmal abstürzt (nicht immer)
Code: |
BOOL CResourceManager::DeleteTexture(LPCSTR lpFileName)
{
map<string,LPDIRECT3DTEXTURE9>::iterator it;
it = m_MapTextures.find(lpFileName);
if(it != m_MapTextures.end())
{
(it->second)->Release();
m_MapTextures.erase(lpFileName);
return TRUE;
}
return FALSE;
} |
Sieht einer den Fehler? Meiner Meinung nach sollte alles Funktionieren... _________________ <-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->
Das Spiel zu unserer Schule:
http://www.grabbe-game.de |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 10.04.2004, 17:09 Titel: |
|
|
Rufst du die Funktion mehrmals irgendwo auf ? Läscht du die Texturen wenn du ein anderes Objekt nutzt (aus versehen ?!)
Wo genau in der Funktion wird der Fehler ausgelöst ? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Cyianor Super JLI'ler
Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 10.04.2004, 18:02 Titel: |
|
|
Du könntest, bevor du die Textur löscht, testen, ob die Textur überhaupt existiert.
Das kann nämlich sonst zu einem Absturz führen. |
|
Nach oben |
|
|
fowly JLI'ler
Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
Verfasst am: 10.04.2004, 18:44 Titel: |
|
|
@vision wird das nicht mit
if(it=m_MapTextures.end())
gemach? ich hatte nämlich schon vor, zu überprüfen, ob die textur da ist oder nicht. wenn mein code nicht stimmt, wie sollte es denn heißen?
@fallen ich habe drauf geachtet, dass die texturen nur gelöscht werden wenn sie nicht mehr benutzt werden. außerdem sagt der debugger, dass der fehler im geposteten code steckt... _________________ <-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->
Das Spiel zu unserer Schule:
http://www.grabbe-game.de |
|
Nach oben |
|
|
Cyianor Super JLI'ler
Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 10.04.2004, 19:17 Titel: |
|
|
fowly hat Folgendes geschrieben: | @vision wird das nicht mit
if(it!=m_MapTextures.end())
gemach? ich hatte nämlich schon vor, zu überprüfen, ob die textur da ist oder nicht. wenn mein code nicht stimmt, wie sollte es denn heißen? |
if(it!=m_MapTextures.end())
sagt, das, wenn der iterator auf ein anderes Element als den Schluss zeigt weitergemacht werden soll. Das muss schon sein. Aber trotzdem fehlt die Abfrage ob die Textur gültig ist. Es müsste also so aussehen:
Code: | BOOL CResourceManager::DeleteTexture(LPCSTR lpFileName)
{
map<string,LPDIRECT3DTEXTURE9>::iterator it;
it = m_MapTextures.find(lpFileName);
if(it != m_MapTextures.end())
{
if((it->second))
{
(it->second)->Release();
m_MapTextures.erase(lpFileName);
return TRUE;
}
}
return FALSE;
} |
|
|
Nach oben |
|
|
HotAcid Super JLI'ler
Alter: 43 Anmeldedatum: 04.08.2002 Beiträge: 372 Wohnort: Berlin Medaillen: Keine
|
Verfasst am: 10.04.2004, 19:59 Titel: |
|
|
Die Methode "find" zeigt auf "end", wenn das Element NICHT enthalten ist. Der Iterator "end" zeigt nämlich NICHT auf das letzte Element, sondern HINTER das letzte Element.
cu Felix _________________ StGB §§ 328 Abs. 2 Pkt 3:
Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. |
|
Nach oben |
|
|
Cyianor Super JLI'ler
Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 10.04.2004, 20:16 Titel: |
|
|
oder so |
|
Nach oben |
|
|
fowly JLI'ler
Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
Verfasst am: 10.04.2004, 21:15 Titel: |
|
|
@vision ich werde deine ergänzung gleich einbauen. mal sehen, aber eigentlich sollte die textur sowieso nur einmal gelöscht werden. wenns also trotzdem nicht geht, werdet ihr bald wieder von mir hören... _________________ <-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->
Das Spiel zu unserer Schule:
http://www.grabbe-game.de |
|
Nach oben |
|
|
fowly JLI'ler
Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
Verfasst am: 11.04.2004, 12:10 Titel: |
|
|
also... es klappt immer noch nicht
und kommischerweise zeit mir der .net debugger den fehler in folgender zeile:
Code: |
it = m_MapTextures.find(lpFileName);
|
wo soll denn da ein fehler sein bzw. entstehen können ? _________________ <-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->
Das Spiel zu unserer Schule:
http://www.grabbe-game.de |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
|
fowly JLI'ler
Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
Verfasst am: 11.04.2004, 12:21 Titel: |
|
|
.net sagt an der stellt immer
Zitat: |
Unbehandelte Ausnahme bei 0x00403c7b in Grabbe-Game.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x0006002d.
|
_________________ <-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->
Das Spiel zu unserer Schule:
http://www.grabbe-game.de |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 11.04.2004, 12:27 Titel: |
|
|
Vielleicht konnte die Textur in der Map nicht gefunden werden und so kann der Iterator auch net initialisiert werden.
Da kann ja der Debugger/Computer nicht einfach irgendeinen Wert übergeben _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
fowly JLI'ler
Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
|
Nach oben |
|
|
fowly JLI'ler
Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
|
Nach oben |
|
|
|