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

 Delphi Discussion :

Lire un fichier texte avec différents champs


Sujet :

Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Lire un fichier texte avec différents champs
    Bonjour à tous, je suis nouveau sur ce forum.

    Je dois développer une appli qui enregistre dans une table les champs d'un fichier texte, dont la structure est la suivante:

    colonne colonne colonne colonne
    ___________________________________________
    donnee donnee donnee donnee
    donnee donnee donnee donnee
    donnee donnee donnee donnee

    Voila je ne sais pas du tout comment faire pour différencier chaque champ, sachant qu'aucun caractère spécial ne les sépare, les champs ne sont pas forcément de la même longueur (mais les données d'un même champ si).

    Une lecture octet par octet est impossible car le fichier texte est très gros donc ce serait beaucoup trop long. Peut-être y a-t-il une solution ligne par ligne ou paquet par paquet, j'ai essayé pas mal de chose mais j'ai eu aucun résultat satisfaisant.

    Merci à ceux qui voudront bien m'aider!
    ++

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    il faut un minimum de structure

    "les champs ne sont pas forcément de la même longueur (mais les données d'un même champ si)"

    ça c'est la clé, tu peux lire le fichier par bloc (record)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TPropyle49Bloc = packed record
      Champ1: array[0..19] of AnsiChar;
      Champ1: array[0..9] of AnsiChar;
      Champ1: array[0..29] of AnsiChar;
    end;
    pour lire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var
      Bloc: TPropyle49Bloc;
     
    Stream.Read(Bloc, SizeOf(Bloc));
    cherche sur le forum, c'est méthode a été utilisé récemment !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    OK merci je vais voir ça!

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    En fait j'ai trouvé une solution beaucoup plus simple!

    Il suffit de faire une lecture ligne par ligne, et de supprimer pour chaque ligne les caractères avant et après chaque champ (delete()).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while not eof(FichierText) do
      begin    
        readln(FichierText, unChamp);
        Delete(unChamp, 1, nb_octets_avant);
        Delete(unChamp, nb_octets_champ, 256);
        champ1 := unChamp;
        end;

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

Discussions similaires

  1. lire un fichier texte avec fscanf
    Par yesil08 dans le forum Débuter
    Réponses: 8
    Dernier message: 30/10/2009, 10h21
  2. Réponses: 13
    Dernier message: 07/07/2008, 14h29
  3. Réponses: 7
    Dernier message: 04/07/2008, 17h25
  4. Import fichier texte avec des champs variables
    Par joshua12 dans le forum Access
    Réponses: 4
    Dernier message: 26/09/2006, 09h06
  5. [C++] Lire un fichier Texte avec SDL
    Par d-jey dans le forum SDL
    Réponses: 8
    Dernier message: 26/05/2006, 02h38

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