CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

probleme C++

seb203
seb203
Niveau 5
16 septembre 2005 à 20:56:47

voici mon code, le but état tout simple, je demande trois variables differentes ds une boucle for .... et a chaque fois la variable entrée doir etre stokée dans un fichier *.ini

==================================================
====

==================================================
====

  1. include <conio.h>
  2. include <stdio.h>
  3. include <time.h>
  4. include <iostream.h>
  5. include <string.h>
  1. include <pheader.h>

HWND hWnd;
HDC hDC;

void main()
{

int i;
int j;
int var;
int vara;
int nbcomptes;
int pseudo;
int action;
int nombre;
int limite;
int intervalle;
char cpseudo[20];
char cpass[20];
char cmail[20];
int creer;
creer = 1;

printf("action ?" );
cin>> action;

if( action == 1)
{

printf("nombre de comptes a créer ?" );
cin>> nombre;

printf("==========================================
============================\n");

for ( j=1; j<=nombre; j=j+1 )
{
printf("pseudo ?" );
cin>> cpseudo;
printf("pass ?" );
cin>> cpass;
printf("mail ?" );
cin>> cmail;

printf("==========================================
============================\n");

WritePrivateProfileString("cpseudo","cpass","cmail
","C:\\Documents and Settings\\Administrateur\\Mes documents\\projet\\log.ini");

if ( nombre == j )
{
limite = 1;
printf("intervalle de temps entre chaque inscriptions -mini 1200000 - en millisecondes-?\n");
cin>> intervalle;

printf("attention les inscriptions commenceront dans 10 secondes");
Sleep(10000);
printf("Programme incomplet");
}

}

}
return;
}

==================================================
========

==================================================
========

Donc le probleme c´est que tout marche nikel, mais les variables ne sont pas inscrite dans le fichier .... donc c´est a ce niveau que ca merde :

WritePrivateProfileString("cpseudo","cpass","cmail
","C:\\Documents and Settings\\Administrateur\\Mes documents\\projet\\log.ini");

Mais impossible de savoir pk :(

lag-it
lag-it
Niveau 10
16 septembre 2005 à 21:10:19

Déjà à quoi ils servent tes :

HWND hWnd;
HDC hDC;

?

Idem pour les autres variables inutilisées : faut se méfier des copier coller de sources d´autres programmes : il faut comprendre ce que l´on fait pour ne prendre que ce qui est utile et qui marche.

Ensuite :

WritePrivateProfileString("cpseudo","cpass","cmail

","C:\\Documents and Settings\\Administrateur\\Mes documents\\projet\\log.ini");

Faut surtout pas écrire : "cpseudo","cpass","cmail
" : enlève les guillemets, sinon le compilateur va générer un code qui passera les chaines contenant "cpseudo", etc... à la fonction.

Enfin : ton programme n´as pas besoin de passer par la fonction WritePrivateProfileString (ca vient du sdk ca ? J´en sait rien...) : si tu ne te sert des fonctions de cette bibliothèque que pour l´écriture dans les fichiers et pas pour le fenetrage, l´app. en générale, utilise plutot les mécanismes fournis en standard avec le C/C++ :

Un appel à fopen pour obtenir un FILE * sur lequel tu utiliseras fprintf ou une utilisation de iostream (cf doc) devrait te permettre de faire ce que tu souhaites.

Exemple idiot en C (marche aussi en C++) :

char buff(256);
FILE *fichier = NULL;

fichier = fopen("log.ini","w");
fgets(buff);

fprintf(fichier,"Nom : %s",buff);

fclose(fichier);

Conseil final : décide-toi : tu programmes "en C ou en C++" (bon entre guillemets) : évite de mélanger cin et printf : utilise soit cin et cout, soit printf, fgets, scanf...

dnob700
dnob700
Niveau 10
16 septembre 2005 à 23:02:13

je en sais pas ce qu´est ce pheader.h mais tu devrait inclure windows.h pour utiliser writeprivateprofilestring.

lag-it : cette fonction à l´avantage d´utiliser le format des fichiers ini c´est à dire d´écrire dans le fichier :

[section1]
NomVar1=Valeur
NomVar2=Valeur
...

[section2]
...

Mais je crois que seb n´utilise pas exactement la fonction comme il faut le faire.

Une bonne utilisation ressemblerait à ça :

WritePrivateProfileString("profile","cpseudo",cpse
udo,"log.ini");

WritePrivateProfileString("profile","cpass",cpass,
"log.ini");

WritePrivateProfileString("profile","cmail",cmail,
"log.ini");
(tu peut mettre le nom du fichier complet c´est juste por la lisibilité que j´lai laissé seulement log.ini).

Et là, tu aura tes différente variables écrite dans ton fichier.

Ce genre de sauvegarde est pas mal car ça permet d´écrire des donnée numérique, des chaines ou des donnée binaires dans un fichier lisible et modifiable par un être humain (sauf bien sur pour les donnée binaire si on y stocke une instance de classe) et sans trop de problème pour la relecture et pour séparer les différent champ.

En tout cas pour les fichier de configuration ej trouve que c´est vraiment sympa même si c´est remplacé depuis win95 par le registre. MAis le problème du registre c´est que c´est plus chiant à modifier et surtout que ça laisse des traces.

lag-it
lag-it
Niveau 10
16 septembre 2005 à 23:16:39

A en effet si WritePrivateProfileStringaccepte une chaine indiquant le nom du champ, il faut bien mettre les guillemets autour du nom de champ, mes excuses :)

seb203
seb203
Niveau 5
17 septembre 2005 à 14:10:56

merci ca marche nikel.
juste pour savoir, je n´en ai pas besoin tout de suite mais bon, commet on fait la fonction inverse, pour selectioner par exemple les pseudo enrengistrés dans le fichier "log.ini" où une variable "cjour" sera egale a 1 par exemple??

exemple :

// ca c ce qui est marqué dans le fichier log, et je voudrais recuperer toute les variables des pseudos qui ont 1 jour ....

[seb203]
cpseudo=seb203
cpass= ******
cmail=superseb203@yahoo.fr
cjours=1

[seb204]
cpseudo=seb204
cpass= ******
cmail=superseb204@yahoo.fr
cjours=1

[seb205]
cpseudo=seb205
cpass= ******
cmail=superseb205@yahoo.fr
cjours=2

Merci de votre aide

dnob700
dnob700
Niveau 10
17 septembre 2005 à 17:50:49

Tu doit utiliser de la même manière la fonction GetPrivateProfileString.

seb203
seb203
Niveau 5
17 septembre 2005 à 18:04:32

Donc la fonction :

GetPrivateProfileString("profile","cpass",cpass,
"log.ini");

Mais dans mon fichier il y a plein de "profile" differents ........ en fait je voudrais choper tous les "profile" ou une variable cjours est égale à "1" dans l´ordre du fichier .... donc je fait comment pour ca ?

dnob700
dnob700
Niveau 10
17 septembre 2005 à 19:25:58

tu ouvre la msdn qui te donnera les syntaxes et les fonctions pour le faire.

Parce qu´il y a effectivement un fonction pour récupérer toutes les variables d´une section.

Tu peut par exemple faire une section [compte] dans laquel tu mets le nom de chaque compte puis une section par compte avec les variable cpass, cmail etc.
Donc tu commence par charger toutes les variables de la section compte (ça te fait un tableau de tableau de char) et ensuite une par une tu ouvre les différente section pour avoir les info.

Par contre tu ne peut pas ouvrir ça dans l´ordre du fichier sauf à réécrire toi même les fonctions pour le lire (c´est pas impossible).

Toujours est-il que ce que tu veux faire est simple mais suffisament long pour que je te conseille de chercher par toi même l´écriture exacte.

Cherche sur la msdn les info sur les fonctions suivantes (pour les utiliser, mais elle se ressemble toutes) :
GetPrivateProfileSectionNames : récupère le nom des sections.
GetPrivateProfileSection : Récupère toutes les variables d´une section
GetPrivateProfileString et WritePrivateProfileString sur lesquelles tu peut te documenter aussi.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment