Februar Bug?

Plattformunabhängige GUIs mit wxWidgets.
Antworten
sbaechler
User
Beiträge: 3
Registriert: Mittwoch 27. Januar 2010, 00:13

Hallo

Ich hab ein Programm geschrieben, welches eigentlich stabil lief, bis am 1. Februar. Dann erschien folgender Fehler sowohl auf Mac als auch Windows:

File "H:\workspace\Sunrays\Sunrays\src\Gui2.py", line 953, in run
Frame_with_notebook = MainFrame(None, -1, "" )
File "H:\workspace\Sunrays\Sunrays\src\Gui2.py", line 206, in __init__
self.enddate = wx.DateTimeFromDMY(30, month = 12, year = 2040)
File "C:\Program Files\Python2.6\lib\site-packages\wx-2.8-msw-unicode\wx\_misc.py", line 4158, in DateTimeFromDMY
val = _misc_.new_DateTimeFromDMY(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "(0 < day) && (day <= GetNumberOfDays(month, year))" failed at ..\..\src\common\datetime.cpp(1466) in wxDateTime::Set(): Invalid date in wxDateTime::Set()

Die Codezeilen, welche den Fehler auslösen sind:
self.startdate = wx.DateTimeFromDMY(1, month = 1, year = 2000)
self.enddate = wx.DateTimeFromDMY(30, month = 12, year = 2040)

Sie setzen einfach ein Limit für das Kalender-Widget.

Ich kann mir nicht erklären, woher plötzlich der Fehler kommt. Sogar ältere Versionen des Programs, welche normal funktionerten, starten nicht mehr. Sowohl auf meinen Computern, als auch bei all meinen Beta-Testern.
Wenn ich bei meinem PC das Systemdatum auf ein Tag im Januar ändere, funktioniert das Programm wieder.

Irgendjemand eine Idee?

Freundliche Grüsse
Simon Bächler
Benutzeravatar
/me
User
Beiträge: 3560
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

sbaechler hat geschrieben: Die Codezeilen, welche den Fehler auslösen sind:
self.startdate = wx.DateTimeFromDMY(1, month = 1, year = 2000)
self.enddate = wx.DateTimeFromDMY(30, month = 12, year = 2040)
Ich habe es jetzt nicht überprüft, aber ich meine mich zu erinnern, dass bei dieser Funktion die Monate ab 0 gezählt werden, womit 12 um eins zu groß wäre.
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

/me hat geschrieben:
sbaechler hat geschrieben: Die Codezeilen, welche den Fehler auslösen sind:
self.startdate = wx.DateTimeFromDMY(1, month = 1, year = 2000)
self.enddate = wx.DateTimeFromDMY(30, month = 12, year = 2040)
Ich habe es jetzt nicht überprüft, aber ich meine mich zu erinnern, dass bei dieser Funktion die Monate ab 0 gezählt werden, womit 12 um eins zu groß wäre.
Leider zu spät, aber genau so ist es. Mit month=11 funktioniert es dann auch.
MfG
HWK
sbaechler
User
Beiträge: 3
Registriert: Mittwoch 27. Januar 2010, 00:13

Tatsächlich. Vielen Dank.

Ich weis zwar immer noch nicht, warum das bisher funktioniert hat, aber ich bin froh, dass es jetzt läuft.
Antworten