[MFC]Fichiers ini et cast intempestifs

Fichiers ini et cast intempestifs [MFC] - C++ - Programmation

Marsh Posté le 12-05-2003 à 17:07:48    

OS: windows 2000
 
Je sauvegarde certains paramètres (au nombre de 38) dans un fichier ini, à l'aide de la fonction WritePrivateProfileString.
Ces paramètres étaient des int, mais mon chef m'a dit "Ah non, après réflexion, ca serait mieux d'avoir des float !".
Ah...
Faut donc tout changer...
Pour récupérer ces paramètres, je me servais de GetPrivateProfileInt, qui convenait à merveille. Mais malheureusement, il n'existe pas de GetPrivateProfileFloat...
 
J'ai cherché sur msdn, et il n'y a que GetPrivateProfileString, GetPrivateProfileStruct, GetPrivateProfileSection, GetPrivateProfileSectionNames, et les memes mais sans le Private...
 
En plus, si on veut utiliser GetPrivateProfileString, on ne peut récupérer qu'un char*, et non un CString (ce qui aurait facilité les conversions, grace à atof())...
 
Bref, je suis perdu... (si vous avez besoin du code, n'hésitez pas à demander) :jap:
 
Merci d'avance

Reply

Marsh Posté le 12-05-2003 à 17:07:48   

Reply

Marsh Posté le 12-05-2003 à 17:16:09    

tu donnes toi même la solution :

Code :
  1. char buff[MAXBUFF];
  2. GetPrivateProfileString("monAppli", "maCle", "299792458", buff, MAXBUFF, "param.ini" );
  3. float celerite = atof(buff); //et hop


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
Reply

Marsh Posté le 12-05-2003 à 17:18:41    

Tetragrammaton IHVH a écrit :

tu donnes toi même la solution :

Code :
  1. char buff[MAXBUFF];
  2. GetPrivateProfileString("monAppli", "maCle", "299792458", buff, MAXBUFF, "param.ini" );
  3. float celerite = atof(buff); //et hop




:jap:
Merci, je pensais que atof ne pouvait convertir que des CString...
Je vais tester ca...

Reply

Marsh Posté le 12-05-2003 à 17:24:45    

par contre si tu pouvais donner un peu de code, comment tu lis, comment tu ecris dans ton fichier ini et un exemple du fichier ini, ce serait sympa. je dois lire aussi dans un ini mais j'ai pas su, meme avec GetPrivateProfileString :pfff:  
 
Pocket PC powaa, c'est peut etre different que sur un pc normal (j'en doute mais bon...)[:spamafote] mais je serais quand meme interesse de voir ton code.
 ;)  
 
Merci beaucoup.

Reply

Marsh Posté le 12-05-2003 à 17:26:08    

backdafuckup a écrit :


:jap:
Merci, je pensais que atof ne pouvait convertir que des CString...
Je vais tester ca...


 
de toute facon :  

Code :
  1. char str_char[256] = "blabla";
  2. CString str_cstring = str_char;


est correct :o

Reply

Marsh Posté le 12-05-2003 à 17:31:31    

Voila pour la récupération des données dans le fichier
 

Code :
  1. char * StrVr1 = new char[7];
  2. GetPrivateProfileString("CCD Voltages","Vr1","",StrVr1,7*sizeof(char),"CCD.ini" );


 
D'après ce que j'ai compris, à la lecture, le fichier doit exister, ainsi qu'évidemment, la section ("CCD Voltages" ici), la clé ("Vr1" ici).
le "" est la valeur par défaut au cas ou il ne trouverait rien...
StrVr1 c'est le string que tu récupères
"CCD.ini" c'est le nom de ton fichier ini...
 
Maintenant pour l'écriture :  
 

Code :
  1. WritePrivateProfileString("CCD Voltages","Vr1",valVr1,"CCD.ini" );


 
Pour la lecture, il existe plein de fonctions, pour récupérer des types différents (très pratique si tu veux récupérer des entiers, ou une structure). Par contre, l'écriture ne se fait qu'avec des strings...
 
http://msdn.microsoft.com/library/ [...] ctions.asp
 
 
Voila mon ptit homme ;)  [:aras qui rit]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed