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

Langage Pascal Discussion :

Fichiers : rechercher une personne puis modifier ses données


Sujet :

Langage Pascal

  1. #1
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Fichiers : rechercher une personne puis modifier ses données
    J'aimerais, afin de pouvoir modifier ses données, rechercher une personne lambda dans mon fichier mais je rebute. voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    procedure Research(var F: FUsers);
    var
      U: Users;
      newCode:string[16];
    begin
      reset(F);
      while (not eof(F)) and (newCode=U.code) do
      begin
        read(F,U); 
        writeln('Nom : ', U.name);
        writeln(Mot de passe : ', U.password);
        writeln;
      end;
      close(F);
    end;

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 465
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut
    Quel est ton problème exactement ?

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 945
    Points : 59 442
    Points
    59 442
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il me semble que newCode doit être passé comme paramètre à la procédure de recherche, sinon sa valeur comme variable locale est indéfinie.

    Ensuite, il ne faut pas tester
    en début de boucle car U n'a pas encore été lu dans le fichier.

    Il me semble que ton code devrait donner quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure Research(var F: FUsers; newCode:string);
    var
      U: Users;
      Trouve : Boolean;
    begin
      reset(F);
      Trouve := False;
      while (not eof(F)) and not Trouve do
      begin
        read(F,U);
        if newCode = U.code
           then
             begin
               writeln('Nom : ', U.name);
               writeln(Mot de passe : ', U.password);
               writeln;
               Trouve := True;
             end;
      end; 
      close(F); 
    end;

  4. #4
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    ok c'est bon. Fallait donc y ajouter un test (boolean) pour y arriver. Maintenant le second volet de ma question (ne me dites pas que je suis paresseux mais j'ai pas réussi et donc j'ai naturellement pensé à vous, lol).
    Alors une fois que je ressors une personne donnée, j'aimerais pouvoir en modifier les données.
    J'ai fait ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    [...]
    procedure ModifNote(var F: FUsers; login:string; password:string); 
    var 
      U: Users; 
      Trouve : Boolean; 
    begin 
      reset(F); 
      Trouve := False; 
      while (not eof(F)) and not Trouve do 
      begin 
        read(F,U); 
        if login = U.login{si le login saisi==login contenu dans le fichier File of} 
           then 
             begin 
               U.note:=U.note+5;{ mettre la note a jour (+5)}
     
               seek(F, FileSize(F));
               write(F, U);
     
               writeln; 
               Trouve := True; 
             end;
      end; 
      close(F); 
    end;
    [...]
    Là je souhaitais, une fois la personne trouvée, faire sa note +5 et enregistrée la modification apportée au fichier.

  5. #5
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut
    seek(F, FileSize(F));
    write(F, U);
    En faisant un
    seek(F, FileSize(F));
    vous vous placez à la fin du fichier,
    Vous allez donc ecrire la note de U modifiée à la fin du fichier...
    Il faudrait peut-être etudier la structure du fichier (la façon dont sont enregistréees les données dedans) pour ecrire cette note sur l'ancienne, car à mon avis, la note de U se trouve un peu après son login et pas forcément au bout du fichier...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/12/2011, 21h08
  2. Réponses: 1
    Dernier message: 02/11/2006, 10h40
  3. Comment récupérer un fichier d'une URL, puis sérialisation
    Par sqwam71 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 23/05/2006, 14h08
  4. [MySQL] Vider une table puis insérer des données
    Par moonia dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 29/04/2006, 00h45
  5. Réponses: 12
    Dernier message: 11/04/2005, 18h31

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