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 :

Erreur lors de la lecture d'un fichier


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut Erreur lors de la lecture d'un fichier
    Salut.
    Une partie de mon prog consiste à lire un fichier texte remplit par des chiffres et les mis dans un tableau comme des entiers "strtoint" (chaque ligne comprend 5 valeur).
    On cour de lecture il m'affiche erreur de conversion (chaque fois l'erreur apparaisse dans une ligne défirent) quand j'utilise step by step j'ai trouvé que la variable qu'il doit prend un valeur de fichier prend #13 puis #10 puis la valeur existant dans le fichier donc la variable reçoit #13#105 soit le 5 la valeur qu'il faut lire.
    J’ai essayé plusieurs méthode mais je n’ai pas arrivé à résoudre se pb aider moi SVP.
    Merci

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Je te conseille d'utiliser des tStringList pour stocker tes valeurs.
    Pour lire un tableau dans ta sTtringList la fonction à utiliser est loadFromFile.
    Sinon pour ton pb c'est que dans ton fichier les lignes sont 'séparées' par les caractère <CR> et <LF> (#10 et #13) et que ces caractères ne sont pas 'transformables' en entier (du moins par strToInt).

  3. #3
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 289
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 289
    Points : 1 940
    Points
    1 940
    Par défaut
    Quel est ton code pour remplir le tableau?
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2022

  4. #4
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Comment lis-tu ton fichier texte? Avec une TStringList? A la main avec ReadLn? Ou read (visiblement)?
    Bref, montre-nous le code de lecture
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  5. #5
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut
    a propos de #13 et #10 n'existe pas dans le fichier text c'est ca mon probleme.
    l'erreur par fois dans la ligne 10, 120 ou 200 c'est Aléatoire.
    c'est partie de fichier text:
    3,111489947 F 7 -2 8
    3,111489947 F 7 -2 8
    3,112390009 s 7 5
    3,112390066 s 24 16 7
    3,112390066 F 6 -2 7
    3,112390128 F 13 -2 7
    3,112390140 s 23 0 7
    mon code source est:
    pour trunc car je suis besoin que de partie entier
    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
    27
    28
    29
    30
    31
    while not eof(input)  do
    begin
      j:=1;
      i:=i+1;
      temp:=0;
      while not eoln(input) do
      begin
        read(input,x);
        if(x<>' ')  then     //lecture du nombre
          m:=m+x
        else      //classé les nbre dans un tableau
        begin
          if (temp=0)then
          begin
            m:=inttostr(trunc(m))  //j'ai un pb dans trunc et dans tabt[j,i]:=strtoint(m); erreur de conversion
            temp:=1 ;
          end;
          if(m='S')  then
            m:='1'
          else
          if (m='F')then
            m:='2';
          tabt[j,i]:=strtoint(m);  // tabt:array[1..5,1..50000] of integer;
          j:=j+1;
          m:='';
        end;//if x=' '
      end;//eoln
      readln(input);      //retour a la ligne
    end;//eof
     
    closefile(input);

  6. #6
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Citation Envoyé par akremb22
    a propos de #13 et #10 n'existe pas dans le fichier text
    #13#10 sont les caractère CR/LF, en d'autres termes, le retour à la ligne

    Pour ton cas, je te conseillerais la même chose que philnext: utilise un TStringList pour l'ouverture/lecture de ton fichier. Surtout si le fichier n'est pas trop long
    C'est bien plus facile à gérer et tout se passe en mémoire
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Pedro
    . Surtout si le fichier n'est pas trop long
    C'est bien plus facile à gérer et tout se passe en mémoire
    le fichier comporte plus que 40 mile ligne par fois 300 mile ligne
    et pourquoi cette erreur apparaisse quand elle veux parfois elle passe 900 ligne sans erreur
    l'autre pb que je suis besoin des ces valeurs dans un tableau pour faire des teste sur chaque couple de valeur par rapport au reste des valeurs

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 945
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 945
    Points : 5 659
    Points
    5 659
    Par défaut
    mol,
    Citation Envoyé par akremb22
    le fichier comporte plus que 40 mile ligne par fois 300 mile ligne
    et pourquoi cette erreur apparaisse quand elle veux parfois elle passe 900 ligne sans erreur
    l'autre pb que je suis besoin des ces valeurs dans un tableau pour faire des teste sur chaque couple de valeur par rapport au reste des valeurs
    Alors lis-le ligne par ligne, et gère toi-même chaque ligne lue, c'est généralement le plus sûr.

    Avec ton code, avoir la déclaration des variables utilisées ne serait pas superflu, je n'ai pas le courage de le déduire en dépouillant le code
    Si les cons volaient, il ferait nuit à midi.

  9. #9
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Allez, si tu ne veux pas passer par les TStringList je te conseille de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strToInt(Trim(<ta ligne>))
    à la place de

  10. #10
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut
    vous pouvez m'aider comment utilisé le TStringList dans ce cas.
    Merci

  11. #11
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Pourquoi pas mais je n'ai pas compris comment tu traites chaque ligne, notamment la ligne
    Sinon voici un début de 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
     
    procedure VazyMonKiki;
    var 
      tsTemp : tstringlist;
      iBcl : integer;
    begin
      tsTemp := tStringList.create;
      tsTemp.LoadFromFile('mongrosfichier.txt');
      for iBcl := 0 to tsTemp.count-1 do
      begin
       //ici tu bricoles tes strings...qui se nomment tsTemp[iBcl]
      end;
      tsTemp.free;
    end;

  12. #12
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut
    pour tsTemp[iBcl] comprend toute la ligne.
    et je veux manipulé les variable dans cette ligne pour les enregistré dans un tab.
    je fait quoi?
    Merci

  13. #13
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut Erreur de lecture
    Bonjour,

    Il faut commencer par lire le fichier texte avec READLN vous supprimerez ainsi les #13#10.
    Ensuite analyser la ligne en retrouvant les espaces (' ') de séparations et vous pourrez retrouver vos valeurs par des Copy( ).

    Si c'est vous-même qui crée le fichier texte il vaudrait mieux utiliser un Record.

    C'est un retour à TurboPascal.
    Sans prétention.

  14. #14
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut
    Merci.
    Je doit le testé puis s'il bien marcher je doit utilisé RESOLU

  15. #15
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Janvier 2007
    Messages : 107
    Points : 73
    Points
    73
    Par défaut
    MERCI a tous c resolu

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

Discussions similaires

  1. erreur lors de la lecture d'un fichier Excel par un executable
    Par maracujadobrasil dans le forum MATLAB
    Réponses: 19
    Dernier message: 12/12/2013, 11h59
  2. erreur lors de la lecture d'un fichier .Dat
    Par Imène_23 dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/12/2011, 21h11
  3. erreur lors de la lecture d'un fichier
    Par étoile de mer dans le forum Débuter
    Réponses: 4
    Dernier message: 02/01/2010, 20h39
  4. [XSLT] Erreur lors de la lecture d'un fichier XSL
    Par Mobius dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 14/05/2008, 14h25
  5. Réponses: 15
    Dernier message: 31/03/2007, 16h32

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