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

Langage Delphi Discussion :

Copier dans un Array


Sujet :

Langage Delphi

  1. #1
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut Copier dans un Array
    Bonsoir tout le monde,
    Bon voilà j'ai un p'tit problème aprés un long casse tête cette aprés-midi.
    Bref on nous a demander de faire un travaille à l'école, dont il y'a une fonction qui recopie des points se trouvants dans une liste box dans un tableau à deux dimension suivant la syntaxe:
    Ligne dans la liste Box: IceBerg Arnold;12;14;16;9;
    On recopie dans la ligne du tableau: 12 14 16 9 étants des entiers (chaque nombre dans une case biensur), alors j'ai écrit la fonction suivante mais malheureusement elle me fais planter le programme :s, voilà je vous la passe:
    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
     
    //declarations globales
        const MaxStudent=20;
        const MaxLess=4;
    var arrCotes:array[1..MaxStudent,1..MaxLess] of INTEGER;
     
    procedure TfrmLabo_5.CopyToArray;
    var iStudCpt,//compteur de ligne dans la listBox
          iCharCpt,//compteur de caractères lors du traitement d'une ligne
          iLine,//variable de traîtement
          iCol:integer;//compteur colonnes
          sLine,//ligne a traitée
          sCote:string;//cote à recopier dans le tableau
     
      begin
    for iStudCpt:=0 to (lbListe.Count-1)do//On parcourt les lignes de la listBox
         begin
           iLine:=iStudCpt+1;//les tableaux sont indexés à partir de 1 
           iCol:=1;
           sLine := lbListe.items[iStudCpt];//récupérer une ligne
             iCharCpt:=1;
               repeat
                 sCote:='';//initialiser sCote 
                if sLine[iCharCpt]=';' then//si un ; rencontré
                  begin
                   iCharCpt:=iCharCpt+1;//on avance de 1
                     case sLine[iCharCpt]of//teste du prochain caractère
                      ';':begin //si c'est un ; aussi
                         arrCotes[iLine,iCol]:=0;// on met 0(zero) dans le tableau
                         iCol:=iCol+1;//passer à la colonne suivante
                            end
                          else //sinon
                            begin
                             while not(sLine[iCharCpt]=';')do//On loupe jusqu'au                          .                                                                     //prochain ;
                              begin
                                sCote:=sCote+sLine[iCharCpt];//à chaque fois qu'on 
                                                                              //a pas un ; on stock
                                iCharCpt:=iCharCpt+1;//avancer de 1
                                 end;(*while*)
                                   arrCotes[iLine,iCol]:=strtoint(sCote);//on écrit la 
                                                 //cote dans le tableau
                                   iCol:=iCol+1;//on passe à la colonne suivante
                              end;(*else*)
                        end;(*Case*)
                    end;(*if*)
     
                  until iCol>4;
     
           end;(*FOR*)
    Peut être que c'est merdique mais bon, merçi d'avance
    Compil your life guy!
    The Aures Project

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    tu peut divisé votre procedure a une procedure et une fonction
    cherche ici et dans l'aide une ligne une fonction qui fait la ceparation automatique on donnant un séparateur, tu peut crée une toi meme
    aussi n'oublie pas que tu as crée un tableau static a 20 ligne et votre liste peut contenir plus, alors il faut faire un test si list.count est supérieur à 20

    par example
    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
     
    type
       TLista:array[1..5] of string;
    function separe(s:strng):TLista;
    var 
          i,j:integer
    begin
          j:=1; 
          for i:=1 to length(s) do
              begin
                if s[i]=';' then 
                    begin 
                        inc(j);
                        result[j]:='';
                    end; 
                else result[j]:=result[j]+s[i]   ;
              end; 
    end;
    procedure CopyToArray;
    var 
               i,z:integer;
              d:TLista;
    begin
       // j'ai le supérieur et inféieur au clavier ,,, je suis dans un syber,,ok,,  :oops: 
           if list.count supérieyr de 20 then z:=19 else z:=list.count-1;
           for i:=0 to z do 
             begin
                d:=separe(lista.item[i]);
                arrCotes[i+1,1]:=strtoint(d[2]);
                arrCotes[i+1,2]:=strtoint(d[3]);
                arrCotes[i+1,3]:=strtoint(d[4]);
                arrCotes[i+1,4]:=strtoint(d[5]);
             end;
    end;
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  3. #3
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    Une chose qui m'intrigue, c'est quoi:
    ???

    sinon, je n'ai pas bien compris ce que tu fais dans la procedure copytoarray!
    et j'ai oublier de spécifier qu'il se peut que la cote soit sur 1000 donc il n'y aura pas que un chiffre ou deux et il faut prévoir ça.
    Compil your life guy!
    The Aures Project

  4. #4
    Membre averti Avatar de Goundy
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    605
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 605
    Points : 386
    Points
    386
    Par défaut
    c'est bon j'ai régler le problème j'avais commis une p'tite erreur.
    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
    procedure TfrmLabo_5.CopyToArray;
    //Procedure qui copie les cotes se trouvants dans la listBox dans le tableau arrCotes[]
    var iStudCpt, //compteur d'étudiants
        iCharCpt, //compteur de lecture
        iCol:integer;//compteur de colonnes
        sLine,       // ligne à traiter
        sCote:string;// cote récupérée
      begin
       for iStudCpt:=0 to (lbListe.Count-1)do//on parcourt la liste des étudiants
         begin
           iCol:=1;
           sLine := lbListe.items[iStudCpt];//on récupère l'étudiant
             iCharCpt:=1;
               repeat
                 sCote:='';
                if sLine[iCharCpt]=';' then //si ; rencontré
                  begin
                   iCharCpt:=iCharCpt+1; // lire le prochain caractère
                     case sLine[iCharCpt]of
                      ';':begin  // si c'est un ;
                         arrCotes[(iStudCpt+1),iCol]:=0;// on met 0
                         iCol:=iCol+1;
                            end
                          else //sinon
                            begin
                             while not(sLine[iCharCpt]=';')do//tant qu'on a pas un ;
                              begin
                                sCote:=sCote+sLine[iCharCpt];// on stock la lettre
                                iCharCpt:=iCharCpt+1;
                                 end;(*while*)
                                   arrCotes[(iStudCpt+1),iCol]:=strtoint(sCote);//on écrit la cote dans le tableau
                                   iCol:=iCol+1;
                              end;(*else*)
                        end;(*Case*)
                    end(*if*)
                      else
                        iCharCpt:=iCharCpt+1;
     
                  until iCol>4;
     
           end;(*FOR*)
     
     
        end;
    Compil your life guy!
    The Aures Project

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

Discussions similaires

  1. [XL-2007] Copier un array dans autre array
    Par FanTasTik dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2012, 15h21
  2. [Tableaux] copier tout un array dans une autre variable
    Par XavierWRC dans le forum Langage
    Réponses: 3
    Dernier message: 06/01/2010, 17h07
  3. Réponses: 5
    Dernier message: 18/11/2005, 22h11
  4. [javascript] copier dans le "clipboard"
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/08/2005, 14h10
  5. Insérer dans un array
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 29/03/2005, 09h22

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