Einzelnen Beitrag anzeigen

Leanahtan

Registriert seit: 5. Jun 2009
62 Beiträge
 
Turbo Delphi für Win32
 
#1

Schreibschutz für Objekte???

  Alt 1. Feb 2010, 03:38
Ok, das Thema ist vielleicht nicht so ganz aussagekräftig, aber mir ist nichts besseres eingefallen. Also ich habe folgendes Problem. In unserem Projekt benutzen wir eine ISO-Engine (auf Basis von Delphix). Im Laufe der Jahre hatten wir immer mal Fehler, die wir nicht wirklich erklären konnten, und wo wir lediglich vermutet haben, dass eventuell eine der DXDraw-Funktionen Bereiche im Arbeitssspeicher überschreibt. Das Problem trat aber nur sehr selten auf, und konnte nie reproduziert werden. Jetzt hab ich einige Änderungen an der ISO-Engine vorgenommen - während bisher alle Tile-Grafiken in einem einzigen Surface gespeichert wurden, hat jetzt jedes Tile sein eigenes Surface.
Allerdings ist jetzt der Fehler mit dem Überschreiben anderer Bereiche im Arbeitsspeicher nahezu reproduzierbar (man muss nur 1-2 Minuten ausprobieren). Im aktuellen Zustand wird im Laufe der Zeit ein eigentlich unabhängiges Surface (Soldatenportraits) überschrieben, was sich zuerst durch Darstellungsfehler bemerkbar macht, und irgendwann einen Crash verursacht. Leider habe ich keine Ahnung, wie man in so einem Fall die Ursache suchen sollte. Zu Delphix gibt es ja kaum eine ordentliche Doku. Außerdem hat Jim_Raynor vor Jahren eine Menge Änderungen vorgenommen, um z.B. Alphablending zu beschleunigen - ein Update auf die aktuelle Version von (un)Delphix ist also auch nicht möglich. Ich selbst hab eigentlich keine Ahnung von Delphix ^^. Meine einzige Idee war bis jetzt, den Speicherbereich für das Surface der Soldatenportraits irgendwie schreibgeschützt zu machen (und diesen Schreibschutz nur bei Bedarf aufzuheben), um so eine Zugriffsverletzung auszulösen, sobald irgendwo eine Funktion in diesen Speicherbereich schreiben will. Ist sowas irgendwie möglich? Oder habt ihr noch andere Ideen, wie man einem solchen Fehler auf die schliche kommen könnte?
  Mit Zitat antworten Zitat