Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3363 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  ca a deja ete aborde mais... (fichier.ini)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ca a deja ete aborde mais... (fichier.ini)

n°348245
polo021
Posté le 31-03-2003 à 14:33:33  profilanswer
 

En faisant un peu de recherche sur comment lire un fichier .ini je me suis rendu compte qu'il etait conseille de n'utiliser la fonction GetPrivateProfileString(...); que dans un environnement 16 bits. Bien bien mais n'ayant rien trouve d'autre, j'ai teste cela quand meme. Le probleme c'est que mon compilateur (Visual c) ne reconnait pas cette fonction. Des lors, n'y aurait il pas un include a ajouter ou alors cette fonction a elle ete abandonnee ou quoi?
 
Sinon y a pas autre chose que GetPrivateProfileString pour lire dans un fichier .ini a l'heure actuelle?
 
Merci bieng

mood
Publicité
Posté le 31-03-2003 à 14:33:33  profilanswer
 

n°348248
chrisbk
-
Posté le 31-03-2003 à 14:34:54  profilanswer
 

hum, va voir du cote de www.flipcode.com rayon code of the day (fouille les archives de cette section). Me semble qu'il y a ce que tu cherches

n°348260
VisualC++
J'va y penser ...
Posté le 31-03-2003 à 14:38:43  profilanswer
 

Doit faloir inclure <windows.h>  

n°348272
polo021
Posté le 31-03-2003 à 14:43:33  profilanswer
 

VisualC++ a écrit :

Doit faloir inclure <windows.h>  
 


 
je pensais aussi mais... non

n°348281
VisualC++
J'va y penser ...
Posté le 31-03-2003 à 14:46:50  profilanswer
 

C koi comme appli (t es sous VC mais tu fais koi comme appli) ?
 
Si tu as une WinApp et donc un projet MFC, tu as CWinAPP::GetProfile.. dispo
 
 
Edit : en fait c defini ds Winbase.h


Message édité par VisualC++ le 31-03-2003 à 14:48:37
n°348337
polo021
Posté le 31-03-2003 à 15:27:01  profilanswer
 

char tempi[1000];
tempi = CWinApp::GetProfileString(LPCTSTR("SECTION" ),LPCTSTR("KEY" ),LPCTSTR("none" ));
 
mais...heu... comment est ce qu'on specifie le fichier dans lequel il doit chercher??  :heink:  
 
Et puis j'ai droit a  :
error C2352: 'CWinApp::GetProfileString' : illegal call of non-static member function
 
EDIT :  

Code :
  1. CString tempi;
  2. CWinApp* pApp = AfxGetApp();
  3. tempi = pApp->GetProfileString(LPCTSTR("SECTION" ),LPCTSTR("KEY" ),LPCTSTR("none" ));


Comme ca, ca passe mais pour le nom de fichier?


Message édité par polo021 le 31-03-2003 à 15:36:14
n°348347
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 31-03-2003 à 15:37:26  profilanswer
 

GetProfileString est une fonction de l'API Win32, en VC++ on y accède donc via le namespace global :
 
::GetProfileString
 
Pour info :

Citation :


Client: Included in Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, and Windows 95.
Server: Included in Windows Server 2003, Windows 2000 Server, and Windows NT Server.
Unicode: Implemented as Unicode and ANSI versions. Note that Unicode support on Windows Me/98/95 requires Microsoft Layer for Unicode.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.


---------------
J'ai un string dans l'array (Paris Hilton)
n°348353
VisualC++
J'va y penser ...
Posté le 31-03-2003 à 15:39:22  profilanswer
 

Euh c une methode de ta CWinApp si tu en a une

Code :
  1. myApp.GetProfile....


 
Et comment on specifie le .ini comme ca

Code :
  1. free((void*)m_pszProfileName);
  2. m_pszProfileName=_tcsdup(_T(?c:\\dir\\myini.ini?));


 
Tu as pas besoin d appeler free() le destructeur de CWinApp le fait, et c est a placer ds le InitInstance de la WinApp

n°348385
polo021
Posté le 31-03-2003 à 16:09:17  profilanswer
 

merci, ca fonctionne a moitie. Mais quand je dis a moitie, c'est vraiment a moite.  
 

Code :
  1. CString tempi;
  2. CWinApp* pApp = AfxGetApp();
  3. pApp->WriteProfileString(LPCTSTR("SECTION" ),LPCTSTR("KEY" ),LPCTSTR("chosetrucmuch" ));
  4. tempi= pApp->GetProfileString(LPCTSTR("SECTION" ),LPCTSTR("KEY" ),LPCTSTR("none" ));


for (int i=0;i<12;i++)
 AfxMessageBox((CString)(char)tempi.GetAt(i));
m'affiche ... coercuh
 [:violito]

n°348400
polo021
Posté le 31-03-2003 à 16:21:44  profilanswer
 

hehe, parfois je pense.[:texla]  
 
Est ce que ca se pourrait que la taille de mes caracteres soit 2 fois plus grande que la taille d'un caractere normal? Sachant que mon programme tourne sur un pocket pc!  Y aurait pas une histoire d'unicode la dedans? Vous en pensez quoi?

mood
Publicité
Posté le 31-03-2003 à 16:21:44  profilanswer
 

n°348412
VisualC++
J'va y penser ...
Posté le 31-03-2003 à 16:29:47  profilanswer
 

pitetre jsais pas jamais fait sur ce
 
mais bon pour ton test le for je vois pas l interet :D

Code :
  1. CWinApp* pApp = AfxGetApp();
  2. pApp->WriteProfileString(_T("SECTION" ),_T("KEY" ),_T("chosetrucmuch" ));
  3. CString tempi;
  4. tempi= pApp->GetProfileString(_T("SECTION" ),_T("KEY" ),_T("none" ));
  5. AfxMessageBox(tempi);


n°348422
polo021
Posté le 31-03-2003 à 16:42:31  profilanswer
 

ouais ca fonctionne. [:the real pinzo]  
 
Par contre pour specifier le fichier c'est pas gagne parce que pas de c: sur pocket PC je pense donc :  

Code :
  1. m_pszProfileName=_tcsdup(_T(".\\FICHIER.INI" ));

mais ca ne fonctionne pas, si je n'ecris pas la valeur "chosetrucmuch" avant, il ne trouve rien.
 
Donc je suppose que j'allais ecrire quelque part et que je lisais cette valeur sans aucun rapport avec le fichier.  
 
Je vais essayer de trouver un truc pour resoudre ca.
 
Merci
 [:the real phoenix]  
 
 
 
 

n°348436
VisualC++
J'va y penser ...
Posté le 31-03-2003 à 16:53:58  profilanswer
 

Ben tu peut faire ca si ton fichier ini a le mm nom que ton exe
 

Code :
  1. CString csIniName = CString(m_pszHelpFilePath);
  2. csIniName = csIniName.Left(csIniName.GetLength() - 3) + _T("ini" );
  3. free((void*)m_pszProfileName);
  4. m_pszProfileName=_tcsdup(csIniName);


 
Edit : avec le free bien sur


Message édité par VisualC++ le 31-03-2003 à 17:06:34
n°348466
polo021
Posté le 31-03-2003 à 17:17:30  profilanswer
 

ha ben non c'est ratai. pourtant meme nom (meme casse aussi) mais ca fonctionne pas.
Alors maintenant je sais meme plus si c'est le fichier ou la lecture qui va pas [:ruisseau de larmes]

n°348471
VisualC++
J'va y penser ...
Posté le 31-03-2003 à 17:20:09  profilanswer
 

Bah ce que je peut t affirmer c que ca marche sous Win normal (98 2K NT et XP) j ai teste et la sous 2K j ai tester au cas ou car de memeoire.

n°348474
polo021
Posté le 31-03-2003 à 17:26:19  profilanswer
 

ouais ben merci quand meme. Je vais essayer d'eclaircir ca.
:jap:  
       :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  ca a deja ete aborde mais... (fichier.ini)

 

Sujets relatifs
Inserer du texte dans un fichier texte[PHP]Problème récuperation fichier uploadé:open_basedir restriction...
obtenir la date de modification d'un fichier[C++] Lire un fichier
[résolu] ouvrir un fichier au travers d'HTTPremplacer des valeurs dans un fichier existant avec un .bat
Créer un fichier Jpeg a partir d'objet "Image" ou "Graphics"[C] Comment calculer la taille d'un fichier??
Pb ecriture dans un fichier: retour à la ligne?lire et ecrire dans un fichier
Plus de sujets relatifs à : ca a deja ete aborde mais... (fichier.ini)


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)