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

Java Discussion :

Lecture dans un fichier texte


Sujet :

Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut Lecture dans un fichier texte
    Bonjour,

    Je voudrais écrire une méthode qui soit capable de lire des informations dans un fichier texte. Les informations sont des jeux de coordonnées (4 int) précédés d'une étiquette (String). On ne sait pas à l'avance combien il y a de jeux de coordonnée. Après exécution de la méthode, les données doivent être stockées dans une HashMap<String, Rectangle>, la clé étant l'étiquette et la structure Rectangle comprenant les 4 données.

    En cas d'erreur de lecture, peut importe, on garde les clées enregistrées et on arrête le traitement.

    Voila un exemple de fichier actuel valide:
    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
    32
    33
    34
    35
    36
    37
    38
    //
    // monFichier.pos
    // Coordonnées...
    //
     
     
    // -----------------
    // Mes premières coordonnées
    // -----------------
     
    imgLogo
    90	0	600	90
     
    btnDebuter
    290	320	200	30
     
    btnQuitter
    290	360	200	30
     
     
    // -----------------
    // Mes secondes coordonnées
    // -----------------
     
    btnRetour
    290	480	200	30
     
    labTitreTP0
    190	200	400	30
     
    btnTP0
    290	230	200	30
     
    labTitreTP1
    190	280	400	30
     
    btnTP1
    290	310	200	30
    J'ai écrit la méthode qui fonctionne avec ce fichier. Le problème c'est qu'elle est trop stricte, je vous la présente (si vous voyez déjà comment coder la méthode, vous pouvez passer !):
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    public class MaClasse {
     
    	private static HashMap<String, Rectangle> hm = new HashMap<String, Rectangle>();
     
    	...
     
    	private static boolean chargerFichier(String filePath) {
     
    		String ligne;
    		int ligneCount = 1;
    		try {
     
    			// On ouvre le fichier en lecture
    			FileReader fr = new FileReader(filePath);
    			BufferedReader br = new BufferedReader(fr);
     
    			String cleComposant = "";
    			Rectangle rect = new Rectangle();
     
    			do {
     
    				// Lecture d'une ligne
    				ligne = br.readLine();
    				if(ligne != null && (ligne.length() >= 2 && !ligne.substring(0,2).equals("//"))) {
     
    					if( cleComposant.equals("") ) {
     
    						// On lit d'abords le nom du composant
    						cleComposant = ligne;
     
    					} else {
     
    						// Ensuite on lit les coordonnées
    						StringTokenizer tok = new StringTokenizer(ligne, "\t");
    						if(tok.countTokens() != 4)
    							throw new StreamCorruptedException("Probleme de structure de fichier.");
     
    						// On les place dans le rectangle
    						rect.setLocation(Integer.parseInt( tok.nextToken() ), Integer.parseInt( tok.nextToken() ));
    						rect.setSize(Integer.parseInt( tok.nextToken() ), Integer.parseInt( tok.nextToken() ));
     
    						// On ajoute à la table
    						String cle = cleFenetre + "_" + cleComposant;
    						hm.put(cle, new Rectangle(rect));
     
    						// On attends la lecture d'un nouveau composant
    						cleComposant = "";
    					}
     
    				}
    				ligneCount++;
     
    			} while(ligne != null); // On s'arrête en fin de fichier
     
    		}
    		catch(FileNotFoundException ex) {
    			System.out.println("Aucun fichier de coordonnees pour " + cleFenetre);
    			return false;
    		}
    		catch(StreamCorruptedException ex) {
    			System.out.println("Probleme de structure du fichier de coordonnees pour \"" + filePath + "\" ligne " + ligneCount);
    			return false;
    		}
    		catch(NumberFormatException ex) {
    			System.out.println("Probleme de structure du fichier de coordonnees pour \"" + filePath + "\" ligne " + ligneCount);
    			return false;
    		}
    		catch(IOException ex) {
    			System.out.println("Probleme lors de la lecture du fichier de coordonnees pour \"" + cleFenetre + "\"");
    			return false;
    		}
     
    		// Chargement effectué avec succès !
    		return true;
    	}
    }
    Les soucis:
    • Les commentaires doivent être placé en tout début de ligne (ça à la rigueur ce n'est pas grave)
    • Les coordonnées doivent être écrite sur une même ligne et séparée par une et une seule tabulation (et pas d'espace)
    • Une tabulation en fin ou début de ligne de coordonnée => le fichier est invalide
    Voila je voudrais l'améliorer pour plus de souplesse. Je voudrais que l'on puisse écrire librement une étiquette (String), et que après on puisse ajouter autant de séparateur ('\n', '\t' ou ' ') que l'on veut, pour séparer l'étiquette des coordonnées et les coordonnées entre elle.


    Merci de m'éclairer un peu

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 73
    Par défaut
    Bonsoir FabaCoeur,

    Citation Envoyé par FabaCoeur Voir le message
    ...
    Voila je voudrais l'améliorer pour plus de souplesse. Je voudrais que l'on puisse écrire librement une étiquette (String), et que après on puisse ajouter autant de séparateur ('\n', '\t' ou ' ') que l'on veut, pour séparer l'étiquette des coordonnées et les coordonnées entre elle.


    Merci de m'éclairer un peu
    Je pense que tu devra passer par les expressions régulières.

    Regarde ici pour plus de détail : http://cyberzoide.developpez.com/java/regex/

    A+

  3. #3
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Voici une idée en pseudo-code. C'est vite fait, il faut catcher des exception par-ci par-la

    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
     
    label=false
     
    tant que pas a la fin de fichier
      lire ligne
      ligne = ligne.trim()
      si ( ligne.length > 0 && ! commentaire( ligne ) )
        si ! label
          ligne contient une étiquette
        sinon
          extraireCoordonnee( ligne )
        fin si
        label = ! label
      fin si
    fin tant que
    fonction qui détermine si c'est un commentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    commentaire( ligne )
      return ligne.length >= 2 && ligne.charAt( 0 ) == '/' && ligne.charAt( 1 ) == '/'
    fonction qui extrait les coordonnées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    extraireCoordonnee( ligne )
      StringTokenizer token = new StringTokenizer( ligne, "\t " )
      int[] coordonnee = new int[ 4 ]
      pour ( int i = 0 ; i < 4 && token.hasMoreTokens() ; ++i )
        coordonnee[ i ] = Integer.parseInt( token.nextToken() )
      fin pour
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  4. #4
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    Quelques pistes :

    - Pour les commentaires tu peux simplifier en utilisant le caractere # comme dans un fichier de properties par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static boolean isComment(final String ligne) {
        // Une ligne vide ou commencant par # est ignorée
        return ligne.trim().length() > 0 ? ligne.trim().startsWith("#") : true;
    }
    - A la place des StringTokenizer tu peux utiliser la méthode split de String

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Tout d'abord merci pour vos réponses.

    1) marc003:
    Je pense qu'utiliser une telle API serait un peu fastidieuse pour le cas présent..!

    2) dinobogan:
    La chose qui ne va pas fonctionner, c'est extraireCoordonnee( ligne ) puisqu'elle va extraire toutes les coordonnées d'une ligne, mais si l'utilisateur à choisit d'entrer une coordonnée par ligne (on a dit que '\n' pouvait être un séparateur) que va faire la méthode ?

    3) Bezout:
    Je garde ta méthode !
    Ca va simplifier un peu, et permettre d'ajouter des commentaires avec des blancs avant.
    Ca m'a aussi donné une idée pour coder la méthode qui supprime les commentaires d'une ligne (même en fin de ligne). Je vais essayer de la coder.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Voila après code et test, voila la méthode qui permet de retourner une ligne passée en paramètre avec les commentaires enlevés. J'ai gardé les commentaires sous la forme "\\".

    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
    	// Enlève les blancs inutiles et les commentaires
    	public String supprCommentaire(String ligne) {
     
    		// On épure la ligne en enlèvant les blancs inutiles
    		String trimed = ligne.trim();
     
    		// Cas d'une ligne vide
    		if(trimed.length() < 0)
    			return "";
     
    		// On regarde s'il y a un commentaire sur la ligne
    		int pos;
    		if( (pos = trimed.indexOf("//")) == -1 )
     
    			// Aucun commentaire, on retourne la ligne épurée
    			return trimed;
     
    		else {
     
    			// Il y en a un, on l'enlève et on retourne le reste
    			return trimed.substring(0, pos);
    		}
    	}

  7. #7
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(trimed.length() < 0)
    C'est impossible c'est plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(trimed.length() == 0)
    T'as essayé avec ca: ?

  8. #8
    Membre chevronné Avatar de JoloKossovar
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 532
    Par défaut
    Citation Envoyé par FabaCoeur Voir le message
    1) marc003:
    Je pense qu'utiliser une telle API serait un peu fastidieuse pour le cas présent..!
    Erreur, les expressions régulieres sont tres simple à utiliser et te feront gagner du temps. un exemple :
    tu veux récupérer la chaine 'a poil' dans "Je me balade toujours a poil meme quand il neige."
    Imagine que le sujet 'je' peut etre 'Mémé' ce qui modifierai le placement de 'a poil' dans la chaine. Donc or de question d'utiliser un substring quelquonque a moins de récupéré l 'indexOf de 'toujours' et de 'meme' , enfin bref galere. Avec une expression réguliere :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String taString = "Je me balade toujours a poil meme quand il neige.";
    Pattern pattern = Pattern.compile("toujours (*.) meme");
    Matcher matcher = pattern.matcher(taString);
    matcher.find();
    String tachaineApoil = matcher.group(1)// tachaine ="a poil"
    Les expressions régulière te permettront de faire ce que tu veux tres simplement. Va voir l'api quand meme

  9. #9
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Citation Envoyé par FabaCoeur Voir le message
    2) dinobogan:
    La chose qui ne va pas fonctionner, c'est extraireCoordonnee( ligne ) puisqu'elle va extraire toutes les coordonnées d'une ligne, mais si l'utilisateur à choisit d'entrer une coordonnée par ligne (on a dit que '\n' pouvait être un séparateur) que va faire la méthode ?
    J'avais compris (de travers) que ton fichier était figé, tel que tu l'as donné. Sinon, l'algo était plus une idée, un concept. A toi de t'en inspirer si tu veux.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Citation Envoyé par JoloKossovar Voir le message
    Les expressions régulière te permettront de faire ce que tu veux tres simplement. Va voir l'api quand meme
    Oui en fait je vais surement regarder dans cette direction, car pour ajouter la gestion des commentaires du type /* */ ca va être surement plus simple.

    Citation Envoyé par dinobogan Voir le message
    J'avais compris (de travers) que ton fichier était figé, tel que tu l'as donné. Sinon, l'algo était plus une idée, un concept. A toi de t'en inspirer si tu veux.
    Hé bien en fait si tu lis ma méthode tu te rendras compte que c'est à un poil près le même algorithme que j'ai utilisé ^^

    Citation Envoyé par Bezout Voir le message
    C'est impossible c'est plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(trimed.length() == 0)
    Oui en effet il s'agit d'une négligence.

    Citation Envoyé par Bezout Voir le message
    T'as essayé avec ca: ?
    Oui je viens de le faire, ca passe impec.
    La méthode retourne une chaine vide (car les blancs sont supprimés).

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Voila après modifications et en ayant utilisé les idées et petite portion de code postées ici, je suis arrivé à mes fin !
    La méthode est capable de lire un fichier écrit avec un désordre complet.
    Seule restriction: le label d'un composant doit être écrit sur une et une seule ligne (ce qui autorise entre autre à avoir des espaces dans la clé).

    Voila un fichier dont est capable de récupérer les informations:
    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
     
         //
        // Test de Fichier
       // Avec syntaxe sportive
      //
     
     
    btn monBtn  
    290 	480
    	  200
     
    	    30
     
    // Un commentaire ici
     
           labTitreTP0 // Nouveau label
       190 
     
      200  // Commentaire
     
        400		30
     
    		monLabelTest // Un label pour test
    290	230				200	30 // Commentaire fin ligne
     
     
    Un Dernier Label avec espace // Clé avec espaces possible
    34 56 34 56
    Et voila la méthode finale (ou presque, la gestion des /* */ n'a pas été prise en compte):
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    public class MaClasse {
     
    	private static HashMap<String, Rectangle> hm = new HashMap<String, Rectangle>();
     
    	...
     
     
    	// Lit le fichier associé et remplis la table de coordonnées.
    	// Retourne false en cas d'échec de chargement.
    	// Note: en cas d'échec, les clées enregistrées sont conservées.
    	private static boolean chargerFichier(String filePath) {
     
    		String ligne;
    		int ligneCount = 1;
    		try {
     
    			// On ouvre le fichier en lecture
    			FileReader fr = new FileReader(filePath);
    			BufferedReader br = new BufferedReader(fr);
     
    			// Pour stockage dans HashMap
    			String cleComposant = "";
    			Rectangle rect = new Rectangle();
     
    			// Pour lecture des coordonnées
    			int coordLue;
    			int nbCoordLues = 0;
    			int dim[] = new int[4];
     
    			do {
     
    				// Lecture d'une ligne
    				ligne = br.readLine();
    				if(ligne != null) {
     
    					// On supprime les commentaires
    					ligne = trimCommentaire( ligne );
     
    					// Si la ligne n'est pas vide après épuration
    					if( ligne.length() > 0 ) {
     
    						if( cleComposant.equals("") ) {
     
    							// On lit d'abords un nom du composant
    							cleComposant = ligne.trim();
     
    						} else {
     
    							// Ensuite on lit 4 coordonnées
    							StringTokenizer tok = new StringTokenizer(ligne, "\t "); // Tabulation ET espace
     
    							while( nbCoordLues < 4 && tok.hasMoreTokens() ) {
     
    								coordLue = -1;
    								try {
    									// On tente une conversion en entier
    									coordLue = Integer.parseInt( tok.nextToken() );
     
    									// Si conversion réussie, on ajoute la coordonnée dans le tableau dim
    									dim[ nbCoordLues++ ] = coordLue;
    								}
    								catch(NumberFormatException ex) { }
    							}
     
    							if( nbCoordLues == 4 ) { // On a lu 4 coordonnée au total: il faut les enregistrer
     
    								// On place les coordonnées de dim dans le Rectangle
    								rect.setBounds( dim[0], dim[1], dim[2], dim[3] );
     
    								// On ajoute le Rectangle à la table
    								String cle = cleFenetre + "_" + cleComposant;
    								hm.put(cle , new Rectangle(rect));
     
    								// On repart pour lire une nouvelle clé
    								cleComposant = "";
    								nbCoordLues = 0;
     
    							} // Fin enregistrement
     
    						} // Fin lecture coordonnée
     
    					} // Fin traitement ligne
     
    				} // Fin ligne non null
     
    				ligneCount++;
     
    			} while(ligne != null); // On s'arrête en fin de fichier
     
    		}
    		catch(FileNotFoundException ex) {
    			System.out.println("Erreur: Aucun fichier de coordonnees pour " + cleFenetre);
    			return false;
    		}
    		catch(NumberFormatException ex) {
    			System.out.println("Erreur: Probleme de structure du fichier de coordonnees pour \"" + cleFenetre + "\" ligne " + ligneCount);
    			return false;
    		}
    		catch(IOException ex) {
    			System.out.println("Erreur: Probleme lors de la lecture du fichier de coordonnees pour \"" + cleFenetre + "\"");
    			return false;
    		}
     
     
    		// Chargement effectué avec succès !
    		ficCharges.add(cleFenetre);
    		return true;
    	}
     
     
    	// Enlève les blancs inutiles et les commentaires
    	private static String trimCommentaire(String ligne) {
     
    		// On épure la ligne en enlèvant les blancs inutiles
    		String trimed = ligne.trim();
     
    		// Cas d'une ligne vide
    		if(trimed.length() <= 0)
    			return "";
     
    		// On regarde s'il y a un commentaire sur la ligne
    		int pos;
    		if( (pos = trimed.indexOf("//")) == -1 )
     
    			// Aucun commentaire, on retourne la ligne épurée
    			return trimed;
     
    		else {
     
    			// Il y en a un, on l'enlève et on retourne le reste
    			return trimed.substring(0, pos);
    		}
    	}
    }
    Ca fait un peu usine à gaz au final, mais ça à le mérite de fonctionner ^^
    Si vous avez des idées d'optimisation ou autre, je suis toujours preneur.

  12. #12
    Membre chevronné Avatar de let_me_in
    Inscrit en
    Mai 2005
    Messages
    441
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 441
    Par défaut
    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
    if( nbCoordLues == 4 ) { // On a lu 4 coordonnée au total: il faut les enregistrer
     
    								// On place les coordonnées de dim dans le Rectangle
    								rect.setBounds( dim[0], dim[1], dim[2], dim[3] );
     
    								// On ajoute le Rectangle à la table
    								String cle = cleFenetre + "_" + cleComposant;
    								hm.put(cle , new Rectangle(rect));
     
    								// On repart pour lire une nouvelle clé
    								cleComposant = "";
    								nbCoordLues = 0;
     
    							} // Fin enregistrement
    else{
    System.out.println("Les coordonnées de l'etiquette \""+cleComposant+"\" ne sont pas completes");
    }
    ça ne fait pas grand chose, mais c'est une optimisation de l'affichage

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Ce que tu as mis ne marche pas, car même s'il existe bien 4 coordonnées on va afficher 3 fois le message d'erreur à chaque fois !

    Puisqu'il n'y a pas d'autre suggestion, je met le topic à

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

Discussions similaires

  1. Lecture dans un fichier texte.
    Par tazthedev dans le forum Delphi
    Réponses: 4
    Dernier message: 31/10/2006, 16h07
  2. Réponses: 4
    Dernier message: 23/03/2006, 17h12
  3. Réponses: 6
    Dernier message: 23/02/2006, 12h09
  4. [ASP] Lecture dans un fichier texte
    Par thoomis dans le forum ASP
    Réponses: 3
    Dernier message: 23/11/2005, 15h08
  5. [Débutant] Lecture dans un fichier texte
    Par babemagus dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/07/2005, 12h17

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