• 17 Avril 2025, 20:49:44


Auteur Sujet: Lecture / Ecriture dans un fichier  (Lu 1367 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Pirhotau

  • *
  • Nouveau
  • Messages: 11
    • Voir le profil
Lecture / Ecriture dans un fichier
« le: 11 Mai 2014, 20:12:12 »
Salut à tous!

J'essaie de comprendre un peu le fonctionnement des fonction de lecture et d'écriture dans un fichier (fread, fwrite, etc...). J'ai déjà eu l'occasion de me servir de la fonction d'écriture uniquement pour créer une sorte de fichier log où sont enregistré les commandes utilisées ou encore l'enregistrement de coordonnés avec une commande (/sav).

Mais aujourd'hui, j'aimerai aller plus loin et créer un système qui permettrait d'enregistrer certaines données de joueurs (argent, points...) mais aussi de pouvoir les lire lors d'une nouvelle connexion. Je sais qu'il y a déjà de nombreux tuto concernant des systèmes de login, mais j'avoue avoir du mal à comprendre... (A savoir, je n'ai pas du tout besoin de système de mot de passe où autre, c'est pour jouer avec des amis en lan).

Donc, je pensais organiser mon fichier de la manière suivante:
Code: (pawn) [Sélectionner]
NomDuJoueur1 paramètre1 paramètre2 paramètre3 paramètre4 ...
NomDuJoueur2 paramètre1 paramètre2 paramètre3 paramètre4 ...
...
Avec à la rigueur des séparateurs comme | ou ; entre les paramètres.

Là où se situe réellement mon problème, c'est la lecture des différentes données.
- Comment faire pour obtenir le contenu d'une ligne (uniquement) dans un string? (En donnant par exemple le n° de ligne)
- Comment faire pour chercher la ligne qui correspond à un joueur? (Dans ce cas, je suppose l'utilisation d'une boucle qui lit chaque début de ligne et qui compare le nom du joueur (strcmp))
- Il faudrait ensuite pouvoir supprimer une ligne pour pouvoir en réécrire une nouvelle par dessus. (J'ai vu la fonction Fdelete:
[spoiler]
Code: (pawn) [Sélectionner]
lien: [url]http://wiki.sa-mp.com/wiki/Fdelete_code[/url]
fdeleteline(filename[], line[]){
   if(fexist(filename)){
      new temp[256];
      new File:fhandle = fopen(filename,io_read);
      fread(fhandle,temp,sizeof(temp),false);
      if(strfind(temp,line,true)==-1){return 0;}
      else{
         fclose(fhandle);
         fremove(filename);
         for(new i=0;i<strlen(temp);i++){
            new templine[256];
            strmid(templine,temp,i,i+strlen(line));
            if(equal(templine,line,true)){
               strdel(temp,i,i+strlen(line));
               fcreate(filename);
               fhandle = fopen(filename,io_write);
               fwrite(fhandle,temp);
               fclose(fhandle);
               return 1;
            }
         }
      }
   }
   return 0;
}
[/spoiler]

Faudrait-il encore que j'en comprenne l'utilisation...)

- Comment extraire chaque paramètre d'une ligne? (fonction strtok?)

Je crois avoir tout dit... Si j'ai d'autres questions, je vous ferai signe! :)

Merci d'avance! (Et déjà merci si vous avez eu le courage de me lire!)
Projets:
- FS qui contient de nombreux jeux (Chasse au trésor, course de voitures, braquage d'un fourgon, minis jeux divers (ambulancier, vendeur de glaces...)...) (projet principal)
- FS qui contient un compteur de vitesse, une jauge de carburant, péages et radars (inspirés de scripts de PPC, mais réécris et adaptés à mes besoins), affichage des noms de voitures (réécrit et adapté d'un script de Biltong), concessionnaire automobile.
- FS qui regroupe un grand nombre de commandes utiles (enregistrement dans un fichier de coordonnés pour la création d'objets) ou inutiles (changement de l'heure).
- Des ajouts au GM "LVDM" (gestion de la santé par exemple...)