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

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

11

15.05.2010, 21:28

Ich würde dir davon abraten die DLL's einfach umzubenennen. Solltest du Funktionen verwenden, die in der anderen DLL neu definiert wurden, kann es zu Problemen kommen.


Mit Betonung auf "kann". Ich hatte mit dieser Methode noch nie Probleme und kann sie dir empfehlen, da es schneller geht, als wenn man im Internet nach passenden DLLs sucht, die dann auch noch mit Viren verseucht sind. Wenn du Probleme damit haben solltest kannst du immer noch nach einer DLL suchen.

12

16.05.2010, 09:29

Der Debugger erscheint mir ja schon sinnvoll, nur irgendwie verstehe ich nicht, wie er mir bei meinem Problem hilft. Denn wenn ich nun mittels F5 den Debugger starte kommt an einer ganz anderen Stelle eine "Zugriffsverletzung",wenn ich erst im Spiel auf starten gehe und dann auf beenden. Daraufhin lässt sich das Programm nicht weiter durchführen. Wenn ich im Programm direkt auf beenden Klicke kommt ebenfalls eine Zugriffsverletzung, und zwar beim Destruktor der Bassisklasse fstream. Nur was bringt mir das?

Freue mich auf eure Antworten,
3D-Anfaenger

13

16.05.2010, 09:54

Versuch die Stelle ausfindig zu machen, wo der Fehler in fstream ausgelöst wird. D.h. du kannst Vermutungen aufstellen, wo der Fehler ungefähr auftaucht und setzt dort einen Breakpoint und überprüfst die Werte der Variablen. Es wird ja irgendwo bei einer fstream Operation ausgelöst.

EDIT: Ich seh grad, dass du bei jedem Schreibzugriff auf die Datei den kompletten Inhalt löscht. Ist das so gewollt?
Ansonsten: http://www.cplusplus.com/reference/iostream/fstream/open/

EDIT2: Statt '\0' würde ich '\n' o.ä. verwenden. Habe es noch nie mit '\0' probiert, aber damit gibt es sicherlich Probleme.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »-insane-« (16.05.2010, 10:00)


14

16.05.2010, 10:03

Ja, denn ich will ja die Datei mit den Werten aus m_asHighScore neu füllen, damit sie bei nächsten Aufruf des Spiels wieder ausgelesen werden können. Würde ich in der Datei einfach weiter schreiben, dann würde der Highscore unendlich lang, aber er soll ja nur höchstens 10 Einträge haben.
Ich hab im Konstruktor der Klasse CGame mal diesen Aufruf entfernt, weil er mir komsich vorkam.

C-/C++-Quelltext

1
ZeroMemory(this, sizeof(CMainMenu));

Jetzt stürzt das Programm nicht mehr ab, aber warum?

15

16.05.2010, 10:10

Was hattest du denn damit vor? Oo Wenn überhaupt würde man sowas außerhalb der Klasse mit einer Struktur oder so machen, aber da sich die Klasse ja im Grunde selbst initialisiert(Konstruktor), brauchst du das doch nicht machen!?
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »-insane-« (16.05.2010, 10:23)


16

16.05.2010, 12:40

Ja, aber das habe ich ja nicht gemacht. Das war ja schon im Quellcode vom Spiel einprogrammiert und ich wusste auch nicht, was es macht. Dann konnte ich es lieber so stehen lassen.
Eigentlich sollte ein Konstruktor doch die Klasse mit Standardwerten versehen, was bei den Beispielen im Buch oft mit einer Init-Funktion gemacht wird. Das hatte mich schon öfter gewundert...

Also vielen Dank für deine Hilfe, denn jetzt kann ich auch einen Debugger benutzen.

Dein 3d-Anfaenger

BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

17

16.05.2010, 19:23

ZeroMemory(this, sizeof(CMainMenu));

Dieser Aufruf im Konstruktor einer Klasse setzt eine neu erzeugte Instanz einer Klasse komplett auf NULL zurück, sodass man ausschließen kann, dass irgendwelche Variablen nicht 0 als Startwert haben. Ich finde ihn schon sinnvoll. Vielleicht stürzt dein Programm mit diesem Aufruf ab, weil man fstream-Objekte so nicht auf NULL setzen kann?!

Werbeanzeige