GetPrivateProfileString : lire un fichier .INI

Résolu
MaxMax0 Messages postés 3 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 31 mars 2010 - 29 mars 2010 à 21:41
MaxMax0 Messages postés 3 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 31 mars 2010 - 31 mars 2010 à 21:10
Bonjour,

Je n'arrive pas à compiler un exemple très simple (j'ai beau être débutant j'ai l'impression que le problème ne vient pas du code) :
J'ai le message d'erreur ci-dessous :

[size=50]g:\visual_cpp_app\ini\ini.cpp(18) : error C2373: 'GetPrivateProfileStringW' : redéfinition ; modificateurs de type différents
e:\program files\microsoft sdks\windows\v6.0a\include\winbase.h(7796) : voir la déclaration de 'GetPrivateProfileStringW'
g:\visual_cpp_app\ini\ini.cpp(58) : error C3861: 'GetPrivateProfileStringW' : identificateur introuvable


J'ai essayé x variantes du code joint mais sans succès.
J'utilise Visual C++ sous WinXP MAIS l'installation est sur un disk E: au lieu du disk C:. Est-ce que le problème peut venir de cela ? (le windows.h est bien lu sur le disk E: mais n'essaye-t-il pas de faire un lien avec une .dll du disk C: ?./size



#include <stdlib.h>
#include <stdio.h>
#include <windows.h>

DWORD GetPrivateProfileString(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  LPCTSTR lpDefault,
  LPTSTR lpReturnedString,
  DWORD nSize,
  LPCTSTR lpFileName
);

int main(int argc, char *argv[])
{
char temp[100];

GetPrivateProfileString("TEST", "Cle1", "", temp, 100, "Test.ini" );
printf("Resultat = %s",temp);

}



La déclaration dans fichier winbase.h :
WINBASEAPI
DWORD
WINAPI
GetPrivateProfileStringW(
    __in_opt LPCWSTR lpAppName,
    __in_opt LPCWSTR lpKeyName,
    __in_opt LPCWSTR lpDefault,
    __out_ecount_part_opt(nSize, return + 1) LPWSTR lpReturnedString,
    __in     DWORD nSize,
    __in_opt LPCWSTR lpFileName
    );


J'ai essayé de remplacer dans mon code :
- LPCTSTR par LPCWSTR : idem

MaxMax0

4 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
29 mars 2010 à 22:26
Pourquoi tu remets un proto de GetPrivateProfileString au dessus de main() ???
Vire cela et compile en ANSI au lieu de UNICODE et tout rentrera dans l'ordre.
Sinon mets tes chaines au format UNICODE.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
30 mars 2010 à 22:56
TCHAR szappname[] = L"MonProg";

Voir aussi _T ou _TEXT.

http://brunews.com/brunews/download/JR4.zip
Unicode y est complètement détaillé au chapitre 2.

ciao...
BruNews, MVP VC++
3
MaxMax0 Messages postés 3 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 31 mars 2010
30 mars 2010 à 21:28
Merci
J'ai réussi à compiler et faire fonctionner le prog. mais j'avoue que je n'ai pas bien compris ce qu'il faut faire pour compiler en ANSI ou UNICODE.
Je m'en suis sorti en décochant "Hériter des paramètres par défaut du parent ou du projet" sous propriété / ... / Définition du préprocesseur : Les valeur héritées étaient "_UNICODE" et "UNICODE"
Je n'ai pas trop trouvé d'info sur le Web à ce sujet

"Sinon mets tes chaines au format UNICODE" ?? comment fait-on ?

MaxMax0
0
MaxMax0 Messages postés 3 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 31 mars 2010
31 mars 2010 à 21:10
Merci
Je vais étudier l'aide. Les quelques lignes que j'ai déja lu mon déja un peu éclairci les idées.
MaxMax0
0