Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » Sauver et lire une array à une dimension (28 réponse(s))
./REPRISE DU POST PRECEDENT (post n°19)   Marquer comme non lu.
Supermario Ecrit le: Samedi 14 août 2004 à 18:57 Déconnecté(e)    Voir le profil de Supermario Envoyer un email à Supermario Envoyer un message privé à Supermario  

Voilà, j'ai tenu compte des modifications, mais la calculette plante dès qu'on vas dans le menu (var-link) ou dès que l'on veut sauvegarder les comptes une seconde fois.


SYM_ENTRY *sym=SymFindPtr(SYMSTR(name),0);
        HANDLE handle;
       if (sym) {
          if (sym->flags.bits.archived) {
          if (!EM_moveSymFromExtMem(SYMSTR(name),HS_NULL)) break;
          }
          handle=HeapRealloc(sym->handle,202);
          sym=SymFindPtr(SYMSTR(name),0);
        } else {
          HSym hsym=SymAdd(SYMSTR(name));
        if (!*(unsigned long *)&hsym) break;
          handle=HeapAlloc(202);
          if (handle)
            sym=DerefSym(hsym);
          else
            SymDel(SYMSTR(name));
        }
        if (!handle) break;
        sym->handle=handle;
        short *fptr=HeapDeref(handle);
        *fptr=200;
        memcpy(fptr+1,&comptes,200*sizeof(int));


Ouin j'ai même enlevé ftpr[200] (la honte au moins 3 raisons que ca plante rien que pour ça lol) et ça marche pas quand même!! J'ai besoin de votre aide svp!!
Merci beaucoup
supermario
[edit]: Met ton code comme ca!! c plus lisible merci c'est le bouton "#"
-Edité le Samedi 14 août 2004 à 19:29 par benjy-
    
./Post n°20   Marquer comme non lu.
Benjy Ecrit le: Samedi 14 août 2004 à 19:30 Déconnecté(e)    Voir le profil de Benjy Envoyer un email à Benjy Visiter le site WEB de Benjy Envoyer un message privé à Benjy  


moi j'arrive meme pas compiler j'ai des erreurs ici

if (!EM_moveSymFromExtMem(SYMSTR(name),HS_NULL)) break;
if (!*(unsigned long *)&hsym) break;
if (!handle) break;

il me dit Break statement not within loop or switch
Le langage C y'a pas mieux!!!
    
./Post n°21   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 14 août 2004 à 19:32 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Je vois le problème. Remplace 202 par 402 (ou 200*sizeof(int)+2) et 200 par 400 (ou 200*sizeof(int)) dans ton code.

Et sinon, remplace aussi:
if (!*(unsigned long *)&hsym) break;
par:
typedef unsigned long __attribute__((may_alias)) hsl;
if (!*(hsl *)&hsym) break;

(J'aurais dû faire ça dans le code que je t'ai donné.)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°22   Marquer comme non lu.
Kevin Kofler Ecrit le: Samedi 14 août 2004 à 19:33 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Benjy :
moi j'arrive meme pas compiler j'ai des erreurs ici

if (!EM_moveSymFromExtMem(SYMSTR(name),HS_NULL)) break;
if (!*(unsigned long *)&hsym) break;
if (!handle) break;

il me dit Break statement not within loop or switch

Ce code n'a un sens que dans un switch (et encore, ce n'est pas forcément la bonne chose, ça dépend du contexte). Sinon, il faut mettre une autre gestion d'erreurs.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°23   Marquer comme non lu.
Supermario Ecrit le: Samedi 14 août 2004 à 20:06 Déconnecté(e)    Voir le profil de Supermario Envoyer un email à Supermario Envoyer un message privé à Supermario  

SUPER!! On dirait bien que ça marche! Merci beaucoup de votre patience et bravo pour votre niveau! Encore merci!
    
./Post n°24   Marquer comme non lu.
Supermario Ecrit le: Dimanche 15 août 2004 à 14:06 Déconnecté(e)    Voir le profil de Supermario Envoyer un email à Supermario Envoyer un message privé à Supermario  

ah j'ai encore un dernier petit détail, pas impératif mais très utile quand même à vous demander...
Qu'est-ce que je devrais rajouter pour sauvegarder (et lire) mes comptes à partir du dossier TEST à la place du principal?
Encore merci
Supermario
    
./Post n°25   Marquer comme non lu.
Lionel Debroux Ecrit le: Dimanche 15 août 2004 à 14:34 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Peux-tu reposter le code complet ? Je ne voudrais pas poster n'importe quoi.
Lionel Debroux - membre de TICT.
    
./Post n°26   Marquer comme non lu.
Supermario Ecrit le: Dimanche 15 août 2004 à 14:47 Déconnecté(e)    Voir le profil de Supermario Envoyer un email à Supermario Envoyer un message privé à Supermario  

le code complet? ok; alors pour écrire le contenu de comptes dans un fichier portant le nom de "name",jutilise:

SYM_ENTRY *sym=SymFindPtr(SYMSTR(name),0);
        HANDLE handle;
       if (sym) {
          if (sym->flags.bits.archived) {
          if (!EM_moveSymFromExtMem(SYMSTR(name),HS_NULL)) break;
          }
          handle=HeapRealloc(sym->handle,200*sizeof(int)+2);
          sym=SymFindPtr(SYMSTR(name),0);
        } else {
          HSym hsym=SymAdd(SYMSTR(name));
typedef unsigned long __attribute__((may_alias)) hsl;
if (!*(hsl *)&hsym) break;

          handle=HeapAlloc(200*sizeof(int)+2);
          if (handle)
            sym=DerefSym(hsym);
          else
            SymDel(SYMSTR(name));
        }
        if (!handle) break;
        sym->handle=handle;
        short *fptr=HeapDeref(handle);
        *fptr=200;
        memcpy(fptr+1,&comptes,200*sizeof(int));




et pour lire j'utilise:

SYM_ENTRY *savegame_sym=SymFindPtr(SYMSTR(name),0);
    HANDLE handle=savegame_sym->handle;
    int *fptr=HeapDeref(handle);
    memcpy(&comptes,fptr+1,200*sizeof(int));


Voilà; et je voudrai juste lire et écrire pareillement mais dans le dossier portant le nom "TEST".
Merci à vous
Supermario
-Edité le Dimanche 15 août 2004 à 15:52 par benjy-
    
./Post n°27   Marquer comme non lu.
Lionel Debroux Ecrit le: Dimanche 15 août 2004 à 14:56 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Il faut alors concaténer "test\\" devant le nom de fichier que tu passes à la fonction. "\\" est pour figurer un antislash (un seul antislash serait interprété autrement), et tous les symboles corrects d'AMS sont en minuscules.
Lionel Debroux - membre de TICT.
    
./Post n°28   Marquer comme non lu.
Supermario Ecrit le: Dimanche 15 août 2004 à 15:46 Déconnecté(e)    Voir le profil de Supermario Envoyer un email à Supermario Envoyer un message privé à Supermario  

ok merci c'est bon ça marche!
Encore merci à tous!
supermario
    
  :: Index » Forum Ti68K » Programmation C » Sauver et lire une array à une dimension (28 réponse(s))
Pages : 2/2     « 1 [2] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 51.73ms avec 18 requetes