Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » [C]Utilisation claire des fonctions de manipulation de fichi
Kirafi Hors ligne Membre Points: 2174 Défis: 10 Message

[C]Utilisation claire des fonctions de manipulation de fichi

Posté le 05/02/2017 15:43

Salut salut, c'est encore moi .

Bon voilà j'aimerais me faire 4 fonctions universelles :
// Retourne VRAI si le fichier de sauvegarde n'existe pas, FAUX sinon
int no_save();

// Crée un nouveau fichier de sauvegarde (écrase l'ancien si il existait déjà)
void new_save();

// Enregistre les données "data" dans le fichier de sauvegarde
void save(const struct Data *data);

// Lit les données "data" contenus dans le fichier de sauvegarde
void read_save(struct Data *data);


Mais je ne comprend pas vraiment l'utilisation des fonctions de fxlib ...
Je ne sais absolument pas comment les utiliser, donc voilà si vous pouviez m'expliquer ce ne serait pas de refus .


Cakeisalie5 Hors ligne Membre de CreativeCalc Points: 1853 Défis: 10 Message

Citer : Posté le 05/02/2017 15:46 | #


Question conne : as-tu lu le manuel du SDK concernant les fonctions de la fxlib ?
http://bible.planet-casio.com/casio/sdk_manuals/Libraries.pdf

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Kirafi Hors ligne Membre Points: 2174 Défis: 10 Message

Citer : Posté le 05/02/2017 15:48 | #


J'ai pas lu le manuel, mais le wiki .

Ajouté le 05/02/2017 à 23:28 :
Petit up car j'en ai besoin pour pouvoir continuer mon jeu sereinement .

J'ai décortiqué le code d'Atlantis de Lephénixoir, mais le soucis c'est qu'il sauvegarde dans la MainMemory, or j'aimerais le sauvegarder dans la Storage ...
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Cakeisalie5 Hors ligne Membre de CreativeCalc Points: 1853 Défis: 10 Message

Citer : Posté le 05/02/2017 23:31 | #


Pourquoi souhaites-tu sauvegarder dans la mémoire de stockage ? La mémoire principale suffit pour une sauvegarde.

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !
Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Kirafi Hors ligne Membre Points: 2174 Défis: 10 Message

Citer : Posté le 05/02/2017 23:38 | #


J'trouva ça plus propre ...

Enfin bon, je vais regarder ce topic (merci Zezombye).
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Dark storm Hors ligne Labélisateur Points: 11538 Défis: 176 Message

Citer : Posté le 07/02/2017 20:38 | #


Pourquoi ne pas utiliser la lib de je-sais-plus-qui ? Y'a eu ça qui trainait un moment, j'essaie de remettre la main dessus (plus dur que prévu, je croyais que c'était sur le GitLab…)

Ajouté le 07/02/2017 à 20:39 :
Trouvé, c'est memory de Lephe
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Kirafi Hors ligne Membre Points: 2174 Défis: 10 Message

Citer : Posté le 07/02/2017 21:26 | #


Bah c'est ce que j'utilisais, mais j'avais un soucis, et quand j'ai mentionné "memory", Lephé m'a dit que finalement cette lib était bof bof , c'est pour ça que je voudrais en changer .
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 07/02/2017 21:35 | #


Je lui ai dit de ne pas l'utiliser parce qu'elle est pas très bien écrite... x)

Voici quelque chose :
#include <fxlib.h>

FONTCHARACTER file[] = { '\\', '\\', 'f', 'l', 's', '0', '\\', 'l', 'e', '_',
    'j', 'e', 'u', '.', 's', 'a', 'v', 0x00 };

// Peut se tromper en cas d'erreur incongrue, mais ne repondra 1 que si la
// sauvegarde n'existe pas avec certitude.
int no_save(void)
{
    FONTCHARACTER name[30];
    FILE_INFO info;
    int handle;

    int x = Bfile_FindFirst(file, &handle, name, &info);
    Bfile_FindClose(handle);
    return (x == IML_FILEERR_ENUMRATEEND);
}

// Sauvegarde les donnees. Peut echouer si un truc inattendu se passe, mais il
// faudrait que tu le geres et tu ne renvoies meme pas un int donc difficile de
// faire quoi que ce soit... ^^
void save(const struct Data *data)
{
    Bfile_DeleteFile(file);
    Bfile_CreateFile(file, sizeof *data);
    int handle = Bfile_OpenFile(file, _OPENMODE_WRITE);
    if(handle < 0) return; // Too bad
    Bfile_WriteFile(handle, data, sizeof *data);
    Bfile_CloseFile(handle);
}

// Ecrit une sauvegarde par defaut.
void new_save(void)
{
    struct Data default_data[] = {
        // Je te laisse completer...
    };
    save(default_data);
}

// Lit une sauvegarde. Memes remarques que save().
void read_save(struct Data *data)
{
    int handle = Bfile_OpenFile(file, _OPENMODE_READ);
    if(handle < 0) return; // Too bad
    Bfile_ReadFile(handle, data, sizeof *data, 0);
    Bfile_CloseFile(handle);
}
Kirafi Hors ligne Membre Points: 2174 Défis: 10 Message

Citer : Posté le 07/02/2017 21:38 | #


Ah nice ! J'vais regarder ça .
Au pire pour l'erreur, genre j'fais une boucle qui exécute save ou read tant que la fonction renvois une erreur .

Ajouté le 07/02/2017 à 21:51 :
Oulà non en fait j'pense à un truc du genre y'a pas assez de mémoire !!
Ouai je vois le truc bon... J'vais voir si je gérerais ça .

Ajouté le 07/02/2017 à 22:16 :
... Visiblement la fonction no_save ne fonctionne pas...
Cela viens du return (x == IML_FILEERR_ENUMRATEEND);
J'ai remplacé par (x != 0) et ça marche , va savoir teh...

iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 08/02/2017 12:05 | #


Je crois que je me suis trompé, ça doit être handle qui prend la valeur IML_FILEERR_ENUMRATEEND. Je te déconseille de tester brutalement x != 0 parce que s'il se produit une mauvaise erreur d'I/O tu vas croire que le fichier n'existe pas et tu risques de l'écraser. Ce n'est pas un risque que ton utilisateur voudra prendre.
Kirafi Hors ligne Membre Points: 2174 Défis: 10 Message

Citer : Posté le 08/02/2017 12:19 | #


Je teste avec handle quand je rentre .
Ah ouai j'vais plutôt mettre x > 0 du coup car les erreurs sont négatives.
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 08/02/2017 13:08 | #


La fonction ne renvoie jamais de valeurs positives pour autant que je me souvienne. Si tu mets x > 0 faut peut-être t'attendre à des surprises...
Kirafi Hors ligne Membre Points: 2174 Défis: 10 Message

Citer : Posté le 08/02/2017 13:52 | #


Ah non pardon je voulais dire x < 0 .
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir Hors ligne Administrateur Points: 20789 Défis: 143 Message

Citer : Posté le 08/02/2017 21:50 | #


Eh ben justement, non. Si tu fais ça tu vas faire croire à ton jeu que le fichier n'existe pas dès qu'il y aura une erreur à la con du genre « il y a déjà 4 handles de recherche ouverts » ou une sale erreur d'I/O. Tu risques alors d'écraser un fichier existant. Non, la seule erreur qu'il est valide de tester c'est « aucun fichier ne correspond au motif recherché ».
Kirafi Hors ligne Membre Points: 2174 Défis: 10 Message

Citer : Posté le 08/02/2017 22:17 | #


Bon d'accord d'accord , mais ça marche pas .
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 49 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd