TTimer - wie sauber resetten?
Übersicht

![]() |
rambo256Betreff: TTimer - wie sauber resetten? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich habe ja schon viel erlebt mit Referenzen, Pointer etc. . Studiere ja nicht umsonst Informatik... Jedoch kann ich mir einige Fehler in BMax nocht nicht schlüssig erschließen: Ich bekomme Probleme mit den Timern, wie resette ich diese !sauber!, ohne eine NullPointer Exception. Ich habe verschiedene Varianten probiert, die für mich einleuchtenste ist diese: BlitzMax: [AUSKLAPPEN] StopTimer(bspTimer) Oder man lässt die Zeile weg: BlitzMax: [AUSKLAPPEN] bspTimer = New TTimer
Wie handhabt ihr das? |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da ich Timer mit Frequenzen nutzlos finde, hab ich mir selbst welche Geschrieben.
Wozu möchtest du den Timer resetten (bzw. auf was)? |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, auf 0 ![]() Ich arbeitere gerade an einem "Workaround", d.h. ich vergleiche nun die Zeit vom letzten Event mit der aktuellen und handel dann, wenn eine bestimmte Zeitspanne erreicht wurde. Jedoch habe ich selbst da anscheinend ein Speicherleck - von daher würde mich dann doch mal interessiere, wie ihr einen Timer sauber initialisiert. Wenn das nichts hilft, dann muss ich wohl nach anderen Einflüssen nachsehen, die Speicherlecks verursachen :/ |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nunja, man könnte...
BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich nutze zwar nur immer einen einzigen Timer, aber wenn ich mir den Code des Modules anschaue, sollte dies hier funktionieren:
BlitzMax: [AUSKLAPPEN] timer.Stop() Wenn es doch nicht funktioniert und du die neuste Version hast, solltest du vielleicht einen Fehlerbericht auf blitzbasic.com schreiben. Dass man einen Timer manuell stoppen muss, ist aber auch nicht sehr schön... Eventuell gibt es aber einen Grund, weshalb er beim Vernichten des Objektes nicht gestoppt wird. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Xeres:
Ah super, danke. Benutztu du eine andere API, als die Standard-Documentation die bei BMax dabei ist? @mpmxyz: Mhh okay, aber ich denke mal das Nebeneffekte meine Probleme verursachen. Alle anderen Timer laufen bislang problemlos. Wenn jemand eine Idee hat, welche Befehle oder ähnliches, den Timer beeinflussen - bis auf die in der API beschriebenen, nur raus damit ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich benutze die Standard Dokumentation, aber Blide schlägt auch alle Felder vor.
Variante die ich verwende: BlitzMax: [AUSKLAPPEN] SuperStrict |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Netter Code ![]() Ich bin weiter auf Ursachenforschung gegangen. Wann löscht der GarbageCollector eigtl Objekte? In regelmäßigen Zeitabständen? oder am Ende einer Funktion? Noch etwas, es scheint so, als ob bei mir irgendwann der TTimer generell nicht mehr richtig funktioniert. Ich habe die Null-Pointer Exception aufgefangen und ihn so behandelt: BlitzMax: [AUSKLAPPEN] Catch e$ Eigtl, sollte dieser gunTimer ja nun wieder auf ein gültiges Objekt verweisen.... Jedoch tut es dies nicht. Gibt es eine Besonderheit in BMax, die ich in diesem Zusammenhang kennen sollte? ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du dir den Ort der NullPointer-Exception angesehen?
Ich denke, dass sie im Timer-Modul stattfindet. (Dort wird nämlich in C-Codes mit Objektreferenzen etwas herumhantiert.) Du scheinst im Moment einfach davon auszugehen, dass die Timer-Variable "Null" ist. Hast du das auch getestet? mfG mpmxyz P.S.: Der GC kann (fast) immer löschen. |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Natürlich habe ich mir die Stellen angesehen.
Sonst hätte ich ja nicht die Exceptions lokalisieren können. Dafür ja Try-Catch. Die If-Anweisung ist dafür da, um direkt nach dem eigtl Konstruktor Aufruf zu überprüfen, ob denn nun meine Referenz gunTimer auf ein gültiges Objekt verweist. Mich macht es stuzig, dass selbst nach einem direkten Konstruktor-Aufruf meine Referenz gunTimer auf "nichts" verweist... Wegen dem GarbageCollector, spielst du auf die Befehle des GCs an, ihn zu stoppen? |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
jsp |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Mich macht es stuzig, dass selbst nach einem direkten Konstruktor-Aufruf meine Referenz gunTimer auf "nichts" verweist...
Verwendest du in dem Moment evtl. mehr als 16 Timer in deinem Programm? |
||
Logic Gui Professional a Gui Designer for MaxGui |
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist nen sehr sehr guter Einwand.
Jeder Gegner hat einen eigenen Timer und der Fehler tritt erst nach einer gewissen Zeit auf -> Ich habe mal mitzählen lassen und es kam dabei heraus, dass ab einer insgesamten Timer Anzahl von 10 der Fehler auftritt. Klasse! Vor allem, es sind nie gleichzeitig so viele aktiv, entweder der Garbage Collector baut Mist - heißt er vernichtet den "Müll" nicht sauber, oder es ist eine höhere "Macht" ![]() Falls keine Ideen mehr aufkommen, wie man das Problem beheben kann, werde ich mich dann mal darum kümmern müssen, mir einen Ersatz-Timer zu programmieren. So etwas wie Xeres schon bereits gepostet hat ![]() EDIT: Habe mich nun dazu entschlossen, einen globalen Timer für alle Events zu nutzen. Dies habe ich nun umgesetzt und bin mit dem Ergebis sehr zufrieden. Somit kann ich endlich einen neuen Worklog-Eintrag schreiben und die Zeit bis zu einer kleinen Demo ist nicht mehr allzu weit ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group