IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scheme Discussion :

Actualiser des données


Sujet :

Scheme

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 30
    Points : 24
    Points
    24
    Par défaut Actualiser des données
    Salut,
    Je vais essayer de faire simple:

    Alors voila j'ai un fichier : "data.ss" dedans on trouve juste ceci (une constante):

    (Contact 25)

    Au début de mon programme (main.scm), je récupère cette donnée comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (define NBCONTACT   
      (when (file-exists? "data.ss" )
        (call-with-input-file  "data.ss"  (...)
    Aucun problème avec ceci, si je demande:

    (equal? NBCONTACT 25) --> #t


    Maintenant, j'ai une méthode qui ajoute un contact donc il faut modifié la valeur de NBCONTACT je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (define (reload a)
      (when (file-exists? "data.ss" )
        (call-with-output-file  "data.ss"
          (lambda (p-out)
            (fprintf p-out "(Contact ~a)\n" a)) 'replace)))

    la méthode reload remplace une nouvelle valeur dans "data.ss".
    si je fais (reload 66):
    et que j'ouvre data.ss je trouve bien (NBCONTACT 66).

    Mais si je demande NBCONTACT il me renvoie 25 .......

    Si je recompile le programme NBCONTACT deviens bien 66.


    Donc comment faire pour que Actualiser directement cette variable sans avoir à recompiler le programme, existe il une méthode qui "refresh" ?
    Parce que je compte faire un exécutable une fois le programme terminé, et je veux pas devoir relancé le programme à chaque changement !!!


    Merci d'avance.

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Strange-Days Voir le message
    Salut,
    Je vais essayer de faire simple:

    Alors voila j'ai un fichier : "data.ss" dedans on trouve juste ceci (une constante):

    (Contact 25)

    Au début de mon programme (main.scm), je récupère cette donnée comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (define NBCONTACT   
      (when (file-exists? "data.ss" )
        (call-with-input-file  "data.ss"  (...)
    Aucun problème avec ceci, si je demande:

    (equal? NBCONTACT 25) --> #t


    Maintenant, j'ai une méthode qui ajoute un contact donc il faut modifié la valeur de NBCONTACT je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (define (reload a)
      (when (file-exists? "data.ss" )
        (call-with-output-file  "data.ss"
          (lambda (p-out)
            (fprintf p-out "(Contact ~a)\n" a)) 'replace)))

    la méthode reload remplace une nouvelle valeur dans "data.ss".
    si je fais (reload 66):
    et que j'ouvre data.ss je trouve bien (NBCONTACT 66).

    Mais si je demande NBCONTACT il me renvoie 25 .......

    Si je recompile le programme NBCONTACT deviens bien 66.


    Donc comment faire pour que Actualiser directement cette variable sans avoir à recompiler le programme, existe il une méthode qui "refresh" ?
    Parce que je compte faire un exécutable une fois le programme terminé, et je veux pas devoir relancé le programme à chaque changement !!!


    Merci d'avance.
    C'est normale que NBCONTACT ne soit pas modifié dynamiquement. Si tu fais une photocopie d'un document, tu ne t'attends pas à ce qu'il soit modifié quand tu modifies la copie.

    Dans un premier temps tu devrais te faire une fonction obtenir-nbcontact ou un truc du genre qui contient le corps de ta définition de NBCONTACT. Ainsi ta définition de NBCONTACT ressemblera à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (define NBCONTACT obtenir-nbcontact())
    Éventuellement tu pourras modulariser ta fonction pour qu'elle prenne en paramètre le nom du fichier, la valeur recherchée etc.

    Lorsque tu voudras mettre à jour ta valeur de NBCONTACT tu devras refaire un define. Au top-level, un define agit comme un set!. Si tu veux que ce soit modifier directement dans ta fonction reload, tu pourras utiliser un set! directement à l'intérieur de celui-ci. Cependant attention, car dès lors, non seulement tu feras de la programmation impérative, mais en plus tu auras produit un effet de bord. Faire un nouveau define de NBCONTACT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (define NBCONTACT obtenir-nbcontact())
    relira la nouvelle valeur sans provoquer d'autre effet de bord que ceux avec un fichier externe. Ce qui est somme toute préférable. Si jamais tu choisissais de te servir de NBCONTACT comme d'une variable globale avec possibilité de la modifier en cours de programme (comme tu prévois de faire) sache que la convention en Scheme est plutôt de l'appeler
    *nbcontact*: les astérisques indiquant un élément global.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Juste le fait de mettre le nom du fichier en paramètre, sa réouvre le fichier et donc prend la nouvelle valeur comme il faut !
    (j'aurais du m'en douter -_-)

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 22
    Dernier message: 05/06/2018, 09h36
  2. MRTG et crontab : problème d'actualisation des données
    Par superjoe dans le forum Administration système
    Réponses: 2
    Dernier message: 06/05/2007, 13h45
  3. [VBA] Actualisation des données par .Requery
    Par PhilC dans le forum Access
    Réponses: 10
    Dernier message: 13/02/2007, 15h02
  4. actualisation des données
    Par ESVBA dans le forum Access
    Réponses: 1
    Dernier message: 05/01/2007, 13h42
  5. [CR7]Actualisation des données depuis VB
    Par elifqaoui dans le forum SDK
    Réponses: 4
    Dernier message: 24/11/2003, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo