Ich hab da ein Problem, dass mich langsam fertig macht.
Folgender Sachverhalt:
Ich habe eine DLL geschrieben und dynamisch eingebunden, das klappt auch super.
In dieser DLL schreibe und lese ich aus der Registry Werte. Dazu habe ich eine Klasse eingebunden, die das schön erledigt. Auf die Funktionen dieser Klasse greife ich mittels globaler Funktionen der DLL zu - folgendermaßen:
Nun bringt er mir ständig einen Debug Assertian Fehler mit Hinweis auf einen _CrtIsValidHeapPointer(pUserData) in einer dbgheap.c, wenn ich versuche , den ausgelesenen Wert zurück zu bekommen. Die Stelle, an der der Fehler auftritt, habe ich oben gekennzeichnet.
Was mache ich verkehrt?
Folgender Sachverhalt:
Ich habe eine DLL geschrieben und dynamisch eingebunden, das klappt auch super.
Code:
void CTEDSView::RegistryLesen(CString& Hersteller, int& ln, int& br)
{
HMODULE handle;
handle = LoadLibrary("teds01.dll");
if (handle != NULL)
{
typedef void (*DLLFUNC) (CString& Name, BOOL Lesen);
DLLFUNC func = (DLLFUNC)GetProcAddress(handle, "Hersteller");
if (func)
func(Hersteller, 1);
}
FreeLibrary(handle);
}
Code:
TEDS01_API void Hersteller(CString& Name, BOOL Lesen) {
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CRegistry Registry;
CString Nam;
if(!Registry.VerifyKey(HKEY_LOCAL_MACHINE, m_Pfad)) // Überprüfen, ob Schlüssel existiert
Registry.CreateKey(HKEY_LOCAL_MACHINE, m_Pfad); // wenn nicht > Erstellung
Registry.Open(HKEY_LOCAL_MACHINE, m_Pfad); // Öffnen der Registry
if (Lesen) {
if (Registry.VerifyValue("Hersteller")) { // Überprüfen, ob Wert bereits existiert
Registry.Read("Hersteller", Nam); // ja > auslesen
Name=Nam; hier liegt der Fehler
Registry.Close(); } // Schließen der Registry
else
Nam ="";
return;
}// Rückgabe
else { // nein >
Registry.Write("Hersteller",Name); // Modellbezeichnung schreiben
Registry.Close(); } // Schließen der Registry
}
Was mache ich verkehrt?
Zuletzt bearbeitet: