Mit diesem Windows CE dreh ich langsam noch echt durch, zuerst die Sache mit den CStrings und nun voll die Probleme mit CTime. Folgender Code wird bei Buttonklick ausgeführt, es wird ein Editfeld abgefragt und mit datum und Zeit abgespeichert. Funktioniert auch solange bis ich die Variable im Editfeld ändere, dann bekomm ich eine 0xC00000005 Acces Violation in der afx.irgendwas und zwar an dieser Stelle:
hier der Code des Buttons:
Der Fehler tritt beim Aufruf von "tag = func->getDay();" auf, diese sieht so aus:
Hier wird zuerst abgefragt ob schon eine Zeit gesetzt wurde, wenn nicht wird diese gesetzt und abgefragt. Mit folgender Methode resete ich die Zeit:
Hatte auch schon "NULL" anstatt "0" war aber der gleiche Fehler. Komisch ist auch das der Debugger mir beim zweiten Aufruf anzeigt das die Variable curTime nicht 0 ist, obwohl ich diese ja auf 0 setze. Dennoch tritt der Fehler nur auf wenn ich die Variable im Editfeld ändere Ich dreh echt noch durch.
Für Hilfe und Anregungen bin ich sehr dankbar.
Grüße
Niko
Code:
_AFX_INLINE BOOL CTime::operator==(CTime time) const
{ return m_time == time.m_time; }
hier der Code des Buttons:
Code:
UpdateData(true);
char temp[21];
if (m_fahrer1 <= 99999999 && m_fahrer1 > 0)
{
m_msg = "";
lfdnr++;
sprintf(temp, "%i", m_fahrer1);
func->fillLeft(fahrer1, temp,'0',8);
int tag,monat,sekunde,minute,stunde;
tag = func->getDay();
monat = func->getMonth();
sekunde = func->getSecond();
minute = func->getMinute();
stunde = func->getHour();
f1date[0] = 0;
// Datum
sprintf(temp, "%d", func->getYear());
strncat(f1date, temp, 4);
if (monat < 10)
{
sprintf(temp, "0%d", monat);
}
else
{
sprintf(temp, "%d", monat);
}
strncat(f1date, temp, 2);
if (tag < 10)
{
sprintf(temp, "0%d", tag);
}
else
{
sprintf(temp, "%d", tag);
}
strncat(f1date, temp, 2);
// Uhrzeit
f1time[0] = 0;
if (stunde < 10)
{
sprintf(temp, "0%d", stunde);
}
else
{
sprintf(temp, "%d", stunde);
}
strncat(f1time, temp, 2);
if (minute < 10)
{
sprintf(temp, "0%d", minute);
}
else
{
sprintf(temp, "%d", minute);
}
strncat(f1time, temp, 2);
if (sekunde < 10)
{
sprintf(temp, "0%d", sekunde);
}
else
{
sprintf(temp, "%d", sekunde);
}
strncat(f1time, temp, 2);
func->resetClock();
}
else
{
m_msg = "Personalnummer 1 außerhalb des gültigen Bereichs!";
}
UpdateData(false);
Der Fehler tritt beim Aufruf von "tag = func->getDay();" auf, diese sieht so aus:
Code:
int funktionen::getDay()
{
if (curTime == 0)
{
curTime = CTime::GetCurrentTime();
}
return (curTime.GetDay());
}
Hier wird zuerst abgefragt ob schon eine Zeit gesetzt wurde, wenn nicht wird diese gesetzt und abgefragt. Mit folgender Methode resete ich die Zeit:
Code:
void funktionen::resetClock()
{
curTime = 0;
}
Hatte auch schon "NULL" anstatt "0" war aber der gleiche Fehler. Komisch ist auch das der Debugger mir beim zweiten Aufruf anzeigt das die Variable curTime nicht 0 ist, obwohl ich diese ja auf 0 setze. Dennoch tritt der Fehler nur auf wenn ich die Variable im Editfeld ändere Ich dreh echt noch durch.
Für Hilfe und Anregungen bin ich sehr dankbar.
Grüße
Niko