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 :

[LG]rechercher dans un fichier texte


Sujet :

Langage Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut [LG]rechercher dans un fichier texte
    salut,

    je débute tout juste en pascal pour un tp, mais ça commence mal.
    je dois faire un prog de gestion de stock, mais je ne sais pas comment faire une recherche dans un fichie texte "stock.txt" afin de retrouver un article, par exemple, suivant sa référence.

    structure de stock.txt :
    référence; designation; quantité; prix_unitaire
    ...

    merci par avance, j'ai besoin de votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 52
    Points : 75
    Points
    75
    Par défaut
    Voici quelques pistes pour te dépatouiller avec ton TP:
    • 1) Tu ouvres le fichier
      Pour cela, va voir dans l'aide de Turbo Pascal les mots clé: ASSIGN, RESET, EOF

      2) Tu passes un à un les enregistrements, jusqu'à tomber sur le bon... Par exemple:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      Reference := '';
      while (not eof(f)) and (reference <> RefCherchee) do
              begin
              ReadLn(f, Reference);
              ReadLn(f, Designation);
              ReadLn(f, Quantite);
              ....
              end;
      if eof(f) then 
         writeLn('Référence inexistancte');
      else
         { Tu traites le cas de la référence trouvée }
      3) Tu fermes le fichier: va voir l'instruction CLOSE



    Une fois que tu as compris le principe, tu peux améliorer le programme:
    - Au lieu de faire ceci à chaque recherche, il est plus rapide d'avoir les données en mémoire et de les sauvegarder dans le fichier à chaque ajout, modification ou suppression.
    - Peut-être utiliser un RECORD pour traiter plus plus globalement ton enregistrement ?
    - En terme de performance pour la recherche, le mieux est de maintenir un index trié pour un accès direct sans avoir à parcourir tout le tableau en mémoire... mais c'est difficile pour bien le penser afin que le gain en performances soit réel (si on ne t'en a pas parlé, laisse tomber).



    Où trouver des informations ?
    • Dans l'aide de Turbo Pascal, il y a des exemples simples tout faits.
    • En faisant une recherche dans le forum: il y a déjà eu des questions sur le sujet
    • Regarde 'Cours et Tutoriels', notamment le cours sur Pascal d'Haypo.

  3. #3
    ALT
    ALT est déconnecté
    Membre émérite
    Avatar de ALT
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2002
    Messages
    1 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 274
    Points : 2 477
    Points
    2 477
    Par défaut
    Bonjour

    Si c'est un fichier texte, il n'y a pas de champ.
    Donc la lecture se fait ligne par ligne.
    Par conséquent, le readln retournera l'ensemble de la ligne (référence; designation; quantité; prix_unitaire).
    Il faut alors chercher la position du point-virgule séparateur, puis extraire les n premiers caractères (n=position du ';' moins 1).
    Enfin, comparer la référence ainsi extraite avec la référence saisie.
    Quand elles sont identiques...

    Bon, je ne vais pas faire tout ton exo.

    Mais l'essentiel est là.

    NOTA : si la longueur de la référence est fixe, il est inutile de chercher la position du ';'
    D'autre part, les fonctions de recherche, d'extraction & de comparaison existent en TurboPascal. Mais si tu ne les connais pas, tu peux les créer, c'est très facile.

    Cordialement

  4. #4
    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
    Seulement deux fonctions sont utiles pour le traitement de ce genre de chaînes : copy ( pour copier une partie de chaîne dans une autre ) et pos ( pour trouver la première occurence d'un caractère dans une chaîne ).
    Tu auras peut-être ausi besoin de la fonction delete pour supprimer une partie d'une chaîne... ça dépendra de la façon dont tu tes chaînes
    a+

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Citation Envoyé par Badfox
    ...mais ça commence mal
    T'es pas au bout de tes peines alors!
    La prog, c'est bien souvent que des problèmes à résoudre!

    Avec toutes ces réponses, depuis plus d'1 mois, ton problème est-il résolu ou pas?
    Car je peux te proposer une autre méthode, non pas pour traîter les chaînes de
    caractères, mais pour utiliser des fichiers avec un enregistrement...

    Sinon, met le tag résolu stp, à+

  6. #6
    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
    Ne te fatigue pas Sub0 ! BadFox a sûrement déserté, son TP étant terminé et sûrement rendu !
    Ce genre de cas arrive trop souvent malheureusement....
    a+

  7. #7
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    oui, wormful, j'ai posté, et après j'ai vu la date!
    Je me doutais qu'il n'était pas derrière son PC à scruter le forum pour avoir des réponses!

    Je mets le tag résolu à sa place donc. Merci, à+

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    Désolé de ne plus avoir suivi le topic, mais je n'y pensais plus.
    et je n'ai pas reçu d'avertissement alors que je surveillais ce topic ! ce qui ne pas aidé.
    je serais intéressé de connaître ton autre méthode, à titre informatif, ça ne peut qu'être bon à savoir.
    et sinon, pour ce problème de surveillance de topic et de mail pas reçu, vous n'auriez pas une explication, je ne comprends pas ce qui se passe mal ?
    par avance merci

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Salut!

    Tu as sûrement oublié de cocher la case "m'avertir lors d'une réponse"...
    Maintenant, cette case est cochée d'office quand tu postes un nouveau sujet.
    En ce qui concerne ma méthode, il n'ya rien de très particulier, il sagit d'utiliser des enregistrements, trie à bulles...
    à+

  10. #10
    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
    hallucinant...

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 16
    Points : 11
    Points
    11
    Par défaut
    nan, j't'assure, je l'avis coché justement, j'avais même mis automatiquement à chaque fois qu'elle soit coché et il était aussi marqué que je surveillais ce topic mais bon...

    voilà, je suis quand même revenu présenté mes excuses à ceux qui m'ont répondu et à qui je n'avais pas donné signe de vie.
    à+

  12. #12
    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
    OK mais, quand même c'est "abuser", comme disent les jeunes !
    Au moins, t'es revenu contrairement à plein d'autres qui ne se sont plus montrés....

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

Discussions similaires

  1. [EasyPHP] recherche dans un fichier texte
    Par cflo91 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 19
    Dernier message: 03/07/2007, 16h33
  2. Recherche dans un fichier texte
    Par Yazoo70 dans le forum C++
    Réponses: 7
    Dernier message: 12/06/2007, 09h31
  3. recherche dans un fichier texte en perl(débutant)
    Par Shyboy dans le forum Langage
    Réponses: 3
    Dernier message: 05/07/2006, 00h53
  4. [VB]Recherche dans un fichier texte
    Par mirascheat dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 26/09/2005, 13h11
  5. Recherche dans un fichier texte volumineux.
    Par Actarus69 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 27/07/2005, 18h39

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