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 :

Debutant pb boucle for


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Debutant pb boucle for
    Bonjour voilà une partie de mon code qui compile bien
    Je souhaite copier toutes les lignes d'un memo1 à un memo2.
    Ma variable nbl(nombre de ligne) contient bien le nombre de ligne du mémo1 et je l'affiche. Mais le problème c'est que mon Mémo2 ne recoit que les 2 premières lignes de mon mémo1 alors que je fais une boucle de 0 à nbl.
    Je vous remercie d'avance
    Boober


    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
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    If OpenDialog1.Execute then
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
     
    nbl :=Memo1.Lines.Count -1;
    ShowMessage(IntToStr(nbl));
    For i := 0 to nbl  do
    begin
    Memo2.Lines[i] := Memo1.Lines[i];
    end;

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    euh ... ca serait peut être plus simple comme çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Memo2.Lines.text := Memo1.lines.Text
    Même pas besoin de boucle for ^^
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    Membre éclairé
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Points : 680
    Points
    680
    Par défaut

    Tu es sûr que ton memo1 n'a pas que deux lignes ???
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  4. #4
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Salut

    Le problème c'est que ton Memo2 ne doit avoir que 2 lignes donc il faut les ajouter. En fait, si j'ai bien compris ce que tu veux faire, moi je ferai ç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
     
    implementation 
     
    {$R *.dfm} 
     
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
    If OpenDialog1.Execute then 
    Memo1.Lines.LoadFromFile(OpenDialog1.FileName); 
     
    nbl :=Memo1.Lines.Count -1; 
    ShowMessage(IntToStr(nbl));
    Memo2.Clear; 
    For i := 0 to nbl do 
    begin 
    Memo2.Add(Memo1.Lines[i]);
    end;
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Merci Guile

    j'ai fait un Memo2.Lines.Add(Memo1.Lines[i]);

    Ca fonctionne trés bien mais pourquoi mon memo2 ne contenait que deux lignes. je ne lui ai pas définit à la base son nombre de ligne, j'avais fait un emplacement aussi grand que pour le mémo1 mais celà ne doit pas en tenir compte aparamment.

    Boober

  6. #6
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 550
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 550
    Points : 3 916
    Points
    3 916
    Par défaut
    Salut

    Tout simplement parce ton Memo2 devait, pour une raison quer j'ignore, contenir déjà deux lignes. Tu ne faisais que remplacer leur contenu via la propriété Lines. Pour ajouter des lignes, il faut employer Add comme te l'a indiqué Guile.

    Regarde en mode conception le contenu de ton Memo2, il se pourrait bien qu'il contienne deux lignes blanches.

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  7. #7
    Membre habitué Avatar de Guile
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 130
    Points : 144
    Points
    144
    Par défaut
    Je suis d'accord avec E-ric. En général, en conception quand tu ajoutes un Memo sur ta Form, il y a au moins 1 ligne par défaut dans la propriétés Lines (il y a déjà le nom du composant pré renseigné).
    C'est pour ça que je conseille de faire un clear avant d'utiliser un Memo.
    Quant à la copie de lignes, je te conseille d'utiliser la méthode de Malatar qui est bien mieux que celle que j'ai improvisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Memo2.Lines.text := Memo1.lines.Text
    Il existe 10 sortes de personnes, ceux qui comprennent le binaire et les autres...

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

Discussions similaires

  1. [débutant] [XSLT]boucle for
    Par bwwilly dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 27/07/2007, 18h31
  2. Réponses: 1
    Dernier message: 31/01/2007, 13h30
  3. [debutant] Boucle for et glGenLists
    Par Naelhem dans le forum OpenGL
    Réponses: 2
    Dernier message: 26/10/2006, 18h30
  4. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 20h21
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 12h54

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