2009-03-30 4 views
0

Wenn ein Gring aus der Registrierung und es ordnungsgemäß angezeigt wird, wenn ich es in einem Meldungsfeld platzieren. :: MessageBoxW (0, (LPCWSTR) achValue, _T ("Gefunden"), MB_YESNO);String Compare funktioniert nicht in Visual C++ 2005

Der Wert wird in archValue gespeichert, einem DWORD. Was ich tun möchte, ist es mit der folgenden Zeichenfolge "2.0.7045.0" zu vergleichen, aber strcmp funktioniert nicht für mich.

Alle Ideen, wie dies zu tun ist, werden sehr geschätzt. Hübscher Quatsch bei C++ und ich kann nicht leicht debuggen, wie es in einer DLL ist.

geschätzt Viel

Tony

+0

Bitte veröffentlichen Sie einige der tatsächlichen Code. – dirkgently

Antwort

2

Sie benötigen die breite char Version von strcmp verwenden: wcscmp.

+0

danke mann, Fühlen Sie sich wie ein echter Dummy. Aber ich lerne :) – TonyNeallon

0

Die Frage ist verwirrend; Sie haben Probleme beim Abrufen der Daten aus der Registrierung oder beim Ausführen eines strcmp?

Sie erhalten ein DWORD (???) aus der Registrierung, die etwa wie "2.0.7045.0" sein sollte? Bist du dir sicher, dass es keine Zeichenfolge (REG_SZ) ist?

Wenn Sie die Zeichenfolge aus der Registrierung abrufen können, sollten Sie in der Lage sein, einen Zeichenfolgenvergleich durchzuführen; Denken Sie daran, dass strcmp (oder andere ähnliche Funktionen/Methoden) 0 (Null) zurückgeben, wenn die Zeichenfolgen gleich sind.

0

Sie haben Höllen Mischung von Saiten.

MessageBoxW - arbeitet mit Unicode-Strings.
_T("Found") - Makro, die bei Bedarf Unicode-Spezifizierer hinzufügen (von Definition in Prjekteinstellungen dpeneded).
LPCWSTR - Unicode-String (const wchar_t*).
strcmp - Vergleichen für Nicht-Unicode-Strings.

sollten Sie einen Typ aller Funktionen verwenden. w oder t oder Nicht-Unicode-Strings.