bei CTime bekomm ich eine Access Violation

Wu-mc

Mitglied
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:

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
 
Konnte den Fehler eingrenzen. Hab festgestellt das es wohl mit den anderen Funktionen garnichts zu tun hat, den sobald ich eine Zeile auskommentiere die folgende Funktion aufruft funktioniert alles einwandfrei:

Code:
void funktionen::fillLeft(char* filled, char* unfilled, char zeichen, int anzahl)
{
	int i, n;

	for (i=0; unfilled[i]; i++);

	n = i;

	for (i=0; i<anzahl-n; i++)
	{
		filled[i] = zeichen;
	}

	filled[i]=0;

	strncat(filled, unfilled, n);

	filled[anzahl] = 0;
}

Aber was kann daran falsch sein? Aufruf sieht so aus:

Code:
sprintf(temp, "%i", m_fahrer1);
		func->fillLeft(fahrer1, temp,'0',8);
 
Zurück