Registry-Eintrag
-
Uruk-h4j schrieb:
Also wenn ich das mit reinterpret_cast .... kompiliere, kommt keine Fehlermeldung. Allerdings wenn ich dann die Anwendung ausführe, dann kommt eine Nette Fehlermeldung:
DEBUG ASSERTION FAILED!
Das ist keine Fehlermeldung...
Lies mal: http://www.c-plusplus.net/forum/viewtopic-var-t-is-120832.html
-
Hast du dir denn das mal angeschaut?
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/eventlog/base/adding_a_source_to_the_registry.asp
da gibt es alle möglichen Beispiele.Und wenn du REG_SZ nutzt, musst du soweit ich weiß auch string als Datentyp benutzen.
-
Wenn ich das EDIT-Feld mit einer CString Variable deklariere, sagt mir der Kompiler:
C2664: 'RegSetValueExA' Konvertierung des Parameters 5 con 'CString *_64' in 'const BYTEE *' nicht möglich....
und dann schreibt er das ich das ding mit dem 'reinterpreter_cast...' durchführen soll.
-
hast du denn dann einen reinterprete_cast versucht?
-
Korrekt ist IMHO:
CString szTest; szTest = _T("Hallo Welt!"); RegSetValueEx(k, _T("KeyName"), 0, REG_SZ, (CONST BYTE*)(LPCTSTR) szTest, (szTest.GetLength()+1)*sizeof(TCHAR));
@estartu: 1. Du erzeugst ein Speicherleck; 2. es ist nicht Unicode-fähig (was bei VC2005 standard ist)
-
Hast Du es mal so versucht?
RegSetValueEx(hKey,"Gerät1",0,REG_SZ,(LPCTSTR)m_DevicesDlg.m_Name1,m_DevicesDlg.m_Name1.GetLength());
Gruß
-
Jochen Kalmbach schrieb:
Korrekt ist IMHO:
CString szTest; szTest = _T("Hallo Welt!"); RegSetValueEx(k, _T("KeyName"), 0, REG_SZ, (CONST BYTE*)(LPCTSTR) szTest, (szTest.GetLength()+1)*sizeof(TCHAR));
@estartu: 1. Du erzeugst ein Speicherleck; 2. es ist nicht Unicode-fähig (was bei VC2005 standard ist)
Das kommt davon, wenn man da nicht durchblickt und sich nur freut, dass ne Fremdlösung zu laufen scheint.
Ich versuche mal so, wie du gezeigt hast.
-
@CTecS: Ja...
1. Compiler-Fehler:cannot convert parameter 5 from 'ATL::CSimpleStringT<BaseType>::PCXSTR' to 'const BYTE *'
2. Geht mit VC2005 per default gar nicht (nicht Unicode-fähig)
-
Ich habe das von Jochen jetzt übernommen und es funktioniert.
Sieht sogar einfacher aus als das was ich vorher hatte.
-
Ich habs jetzt mal mit der Version von Jochen versucht
CString szTest; szTest = _T("Hallo Welt!"); RegSetValueEx(k, _T("KeyName"), 0, REG_SZ, (CONST BYTE*)(LPCTSTR) szTest, (szTest.GetLength()+1)*sizeof(TCHAR));
Halt nur jetzt mit den Membervariablen. Und es funktioneiert FAST einwandfrei. Ich bekomm jetzt nur noch einen Ausnahmefehler von windows, wenn ich das Programm beende, aber das ist irgendwas anders.
Danke an alle !!!