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

C# Discussion :

Problème de boucle while [Débutant]


Sujet :

C#

  1. #21
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ArnaudDS Voir le message
    Sans montrer le code source par contre, du coup si ça ne marche pas impossible de savoir ce qui se passe réellement en background. . Mais, allez, ne crachons pas dans la soupe.
    En fait c'est très facilement debuggable, en mode debug tu verras juste le curseur ressortir de la fonction à la fin d'une itération pour revenir dedans là où il s'était arrêté.

    Après si vraiment tu veux savoir ce qui se passe derrière c'est au moment de la compilation que s'est traduit, et il est toujours possible de décompiler un assemblage.NET avec des outils tels que "justDecompile" de Telerik par exemple.

    Le principe du "yield" c'est une "machine à états". D'ailleurs avec le Framework 4.5 les mots clés "async" et "await" sont aussi basés sur le principe d'une machine à états.

  2. #22
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 13
    Par défaut
    Bonjour,

    Je suis débutante également et mon code est sale, mais pour répondre à :

    Mon programme permet de rechercher un mot dans un fichier txt et d'écrire la ligne associé. Si le mot existe plusieurs fois il devrait écrire la première ligne puis quand l'ulisateur clic sur suivant m'écrire la deuxième ligne etc...
    j'aurais fais ça :

    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
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    using System.IO;
     
    namespace Recherche {
    	public partial class Form1 : Form {
     
    		List<String> listedFile = new List<string>();
    		int lastLine = 0;
     
    		public Form1() {
    			InitializeComponent();
    		}
     
    		private void bt_file_Click(object sender, EventArgs e) {
    			Stream myStream = null;
    			listedFile.Clear();
    			lastLine = 0;
    			if ( opfile.ShowDialog() == DialogResult.OK ) {
    				try {
    					if ( ( myStream = opfile.OpenFile() ) != null ) {
    						using ( myStream ) {
    							tb_file.Text = opfile.FileName;
    							StreamReader sReader = new StreamReader(tb_file.Text);
    							string line;
    							while ( ( line = sReader.ReadLine() ) != null ) {
    								listedFile.Add(line);
    							}
    							sReader.Close();
    						}
    					}
    				}
    				catch ( Exception ex ) {
    					MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
    				}
    			}
    		}
     
    		private void bt_search_Click(object sender, EventArgs e) {
    			searchNext();
    		}
     
    		private void bt_next_Click(object sender, EventArgs e) {
    			searchNext();
    		}
     
    		public void searchNext() {
    			if ( tb_word.Text != "" ) {
    				for ( int i = lastLine; i < listedFile.Count; i++ ) {
    					if ( listedFile[i].ToLower().Contains(tb_word.Text.ToLower()) ) {
    						tb_find.Text = listedFile[i];
    						lastLine++;
    						break;
    					}
    					lastLine++;
    				}
    			}
    		}
    	}
    }
    en sachant que les variable qui commencent par "tb" sont des textbox, celles qui commencent par "bt" sont des boutons, et que "opfile" est un control "openFileDialog" (que j'utilise d'ailleurs pour la première fois) et qui a comme attributs :
    .Filter = txt files (*.txt)|*.txt|All files (*.*)|*.*
    .InitialDirectory = c:\\

    Enjoy

  3. #23
    Invité
    Invité(e)
    Par défaut
    j'ai donc fini par faire une boucle for (car en C# le for c'est trop fort xD) j'avais juste zapé que dans les conditions du for on pouvait mettre une variable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (i = c; i = 50; i++)
    le c pouvait donc être une variable ce qui à résolu tout mon problème de recherche merci pour toutes vos pistes.

    j'ai un légé souci lorsqu'il sort de la boucle il m'indique une erreur du type "ne peut pas être null" et là le programme plante :/ mais le problème de base est donc résolu

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème du boucle while en PHP
    Par kimpak dans le forum Langage
    Réponses: 6
    Dernier message: 11/08/2011, 13h28
  2. Problème de boucle while dans un popup
    Par drogba72 dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2009, 14h19
  3. [MySQL] Problème sur Boucle While après un LEFT JOIN
    Par matperino dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/05/2007, 17h43
  4. [MySQL] Problème de boucle while
    Par Justin_C dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/12/2006, 19h16
  5. [MySQL] Problème de boucle while sur base de données
    Par Darhyl dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/05/2006, 15h11

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