La comparaison de deux TCHAR est avec la même valeur des résultats faux
Je suis en train de vérifier mes applications chemin, et si ce n'est pas un chemin d'accès spécifié, puis de le déplacer. Je pense que mon code est solide, mais il ne fonctionne pas correctement.
TCHAR pCheck[MAX_PATH];
TCHAR xPath[MAX_PATH];
GetModuleFileName(NULL,xPath,MAX_PATH);
if(SHGetSpecialFolderPath(HWND_DESKTOP, pCheck, CSIDL_DESKTOP, FALSE)){
wcscat(pCheck,L"\\NewFile.exe");
MessageBox(NULL,pCheck,NULL,NULL);
MessageBox(NULL,xPath,NULL,NULL);
if(pCheck!=xPath){
CopyFile(xPath,pCheck,0);
ShellExecute(0,L"open",pCheck,NULL,NULL,SW_SHOW);
return 0;
}else{
MessageBox(NULL,L"New Location",NULL,NULL);
return 0;
}
}
Même lorsque le fichier est dans le nouveau chemin d'accès, il sera toujours pCheck != xPath
Je n'ai jamais eu le "un Nouvel Emplacement" messagebox. Lors de la première de deux messageboxs sont affichés, le chemin de l'égalité...
OriginalL'auteur Josh Line | 2012-11-10
Vous devez vous connecter pour publier un commentaire.
Vous êtes simplement en comparant les adresses des tableaux (qui, évidemment, ne sont jamais les mêmes). Si vous voulez comparer les deux chaînes détenues dans les tableaux, vous devez utiliser
_tcscmp();
Remarque:
_tcsicmp
pour la casse des comparaisons.OriginalL'auteur john
Votre TChar tableau se désintègre en un pointeur vers le premier caractère. Vous êtes actuellement à la vérification de pointeur de l'égalité, qui est pourquoi vous n'avez jamais obtenir VRAI.
Utilisation
strcmp
équivalents, pour TChar, comme_tcscmp
._tcscmp est un macro, qui invoque
wcscmp
oustrcmp
selon le type de caractères.OriginalL'auteur Anirudh Ramanathan