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 :

Un problème dans une boucle


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    conducteur
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : conducteur

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Par défaut Un problème dans une boucle
    bonsoir les pro
    j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var
    i:integer;
    begin
    for i :=1 to 9 do
    MaGrille.Cells[i,1]:=edit1.text;
    edit1.text:='';
    seulement ma boucle inscrit toujours la meme valeur ,en fait je voudrais entrer une valeur differente a l'aide de mon tedit
    je suis hyperdebutant ,merci a la personne qui peut m'aider
    delphi c'est complexe!!!

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 174
    Billets dans le blog
    9
    Par défaut
    Bonsoir ! Pourquoi ne pas saisir directement le texte dans la grille ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par ammapro Voir le message
    bonsoir les pro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i :=1 to 9 do
    MaGrille.Cells[i,1]:=edit1.text;
    Bonjour,

    c'est un petit peu normal car la valeur de votre TEdit ne change pas à chaque itération de la boucle.
    Si vous essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i :=1 to 9 do
    MaGrille.Cells[i,1]:= IntToStr(i);
    A chaque itération, la valeur de l'entier i change et donc sa conversion en chaîne (IntToStr) aussi.

  4. #4
    Membre averti
    Homme Profil pro
    conducteur
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : conducteur

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Par défaut boucle
    merci à Selzig et à Roland
    mais mon problème reste entier
    MaGrille.cells:=inttostr(i);incrémente les chiffres de 1 à9 dans la grille or je voudrais entrer des chiffres (un code à 9 chiffres)qui chaque fois sont différents
    j'avance à pas de géant mais le but est à des années lumières

  5. #5
    Invité
    Invité(e)
    Par défaut
    Par exemple, un remplissage avec des nombres aléatoires de 9 chiffres issu d'une vieille librairie lazarusienne :
    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
    function AleaString(  aLen : integer = 20;  bNumberOnly : Boolean = True) : string;
    var
      Str : String;
    begin
     {Randomize; -->Ne pas oublier en début de programme mais pas ici sinon Linux!}
     {Ensemble des caractères possibles}
      if bNumberOnly
      then Str := '0123456789'
      else Str := 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
     {Génération}
      Result   := '';
      repeat
        Result := Result + Str[Random(Length(Str)) +1];
      until(Length(Result) = aLen)
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i : integer;
    begin
      Randomize;   {cf remarque}
      with maGrille do begin
        RowCount := 2;
        ColCount := 10;
        for i := 1 to 9 do
          Cells[i, 1] := AleaString(9) ;
      end;
    end;
    Ou autre approche : on utilise un TEdit pour remplir la TStringGrid :
    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
    unit Unit1;
     
    interface
     
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;
     
    type
      TForm1 = class(TForm)
        edit1: TEdit;
        maGrille: TStringGrid;
        procedure FormCreate(Sender: TObject);
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
         i : integer;
      end;
     
    var
      Form1: TForm1;
     
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     with maGrille do begin
        RowCount := 2;
        ColCount := 10;
     end;
     with edit1 do begin
       MaxLength := 9;
       NumbersOnly := True;
       Text := '';
     end;
      i := 0;
    end;
     
    begin
     if Length(edit1.Text) = 9 then begin
      inc(i);
      with maGrille do
       if i < ColCount then begin
        Cells[i, 1] := edit1.Text;
        edit1.Text := '';
        if i = ColCount -1 then begin
         Key := #0;  //->Pour ne pas valider le dernière caractère entré : à commenter pour tester
         Showmessage('Remplissage terminé.');
         edit1.Enabled := False;
        end;
       end;
     end;
    end;
     
    {Autre factorisation du code possible
    begin
     if Length(Edit1.Text) = 9 then begin
      inc(i);
      with maGrille, Edit1 do
       if i < ColCount then begin
        Cells[i, 1] := Text;
        Text := '';
        if i = ColCount -1 then begin
         Key := #0; //->Pour ne pas valider le dernière caractère entré : à commenter pour tester
         Showmessage('Remplissage terminé.');
         Enabled := False;
        end;
       end;
     end;
    end;
    }
     
    end.
    Testé avec Delphi XE7-VCL

    Bonne continuation.
    Dernière modification par Invité ; 27/12/2014 à 13h23.

  6. #6
    Membre averti
    Homme Profil pro
    conducteur
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : conducteur

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Par défaut probleme boucle
    merci Selzig pour tes codes il va me falloir un peu de temps pour tout digérer mais tes interventions me sont précieuses
    cordialement

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

Discussions similaires

  1. [Embedded Function] Problème dans une boucle FOR-END
    Par roilait dans le forum Simulink
    Réponses: 6
    Dernier message: 19/04/2008, 14h55
  2. problème dans une boucle
    Par tozy88 dans le forum Langage
    Réponses: 6
    Dernier message: 11/03/2008, 15h05
  3. [BASH] Problème dans une boucle IF
    Par coincoin22 dans le forum Linux
    Réponses: 3
    Dernier message: 16/08/2007, 09h34
  4. [Débutant] Problème dans une boucle Matlab
    Par RaphTIM dans le forum MATLAB
    Réponses: 3
    Dernier message: 05/06/2007, 18h51
  5. Problème dans une boucle
    Par Pitou5464 dans le forum Access
    Réponses: 5
    Dernier message: 11/08/2006, 14h51

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