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 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Quel est ton problème exactement ?
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    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 937
    Points : 59 415
    Points
    59 415
    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;
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  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