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 :

Ajouter dans listbox - un moyen plus efficace


Sujet :

Delphi

  1. #1
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut Ajouter dans listbox - un moyen plus efficace
    Hello,

    Il y a sans doute un moyen de faire plus court

    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
     
    for i:=0 to length(RichEdit1.text) do
     begin
       case s[i] of
        'A': inc(ba);
        'T': inc(bt);
        'C': inc(bc);
        'G': inc(bg);
        'U': inc(bu);
       end;
     end;
    ListBox1.Items[0]:= 'A: ' + inttostr(ba);
    ListBox1.Items[1]:= 'T: ' + inttostr(bt);
    ListBox1.Items[2]:= 'G: ' + inttostr(bg);
    ListBox1.Items[3]:= 'C: ' + inttostr(bc);
    ListBox1.Items[4]:= 'U: ' + inttostr(bu);
    ListBox1.Items[5]:= '--------' ;
    ListBox1.Items[6]:= 'Total: '+ inttostr(ba+bt+bg+bu+bc);
    AT

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Hormis que le code ne devrait pas marcher car les item du case of ne sont pas en ordre.

    Je ne vois pas trop l'intérêt d'optimiser ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var b:array[char]of integer;
        i:integer;
        t:string;
    const
        x:string=('ACGTU');//ordre importe peu ici
    begin
        t:=RichEdit1.text;
        for i:=0 to length(t) do inc(b[t[i]]);
        for i:=1 to length(x) do ListBox1.Items[i-1]:= x[i]+': ' +inttostr(b[x[i]]);
        ListBox1.Items[5]:= '--------' ;
        ListBox1.Items[6]:= 'Total: '+ inttostr(b[x[1]]+b[x[2]]+b[x[3]]+b[x[4]]+b[x[5]]);
    end;

  3. #3
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Hello sgmsg

    Il semble fonctionner, j'ai testé.

    Par contre dans ton code le tableau est limité à 256 "entiers" que faire si le nombre de ATGC est de 2000 ou plus
    AT

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    C'est un vecteur qui compte les occurrences de chaque lettre: la limite est l'integer soit sur ma machine +-2^31 ~2milliards;
    Il est possible de prendre des int64 alors tout les codes génétiques de tout les vivants pourront être énumérés (+-2^63 soit 8 trillions)

    Est-ce que tu veux dire advenant qu'un code génétique comporte plus de 256 bases différentes?

  5. #5
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    ok thanks

    par contre j'ai une erreur au niveau de ton code

    Type incompatibles integer et char
    AT

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    Par défaut
    Citation Envoyé par AT Voir le message
    ok thanks

    par contre j'ai une erreur au niveau de ton code
    Je viens de corriger.

  7. #7
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Oui mais là j'ai un résultat incohérent au lieu de 1609 je trouve 38567696

    gaattcgagatgcgaatgagcagcagccattttgatgttgtgagcatcggaacgtttctgcgtccgtacactgtccttttgttacttagataatggctaaggcaagcagtccgggccaca
    ggagtcaaaggcttttcgccagctcctaaacgctggaagtgtaattttttttcttcttataaaattaaacaaacccttttagaaaggaacactcgctttatctcttcgaccgaatttact
    atacatggatatatatatattatcttctgttcacagttaaaactaggaatagcatagtcataagttaacaccatcatgttgagaacgtcaacattgttcaccaagcgtgtccaaccaagc
    ctattttctagaaacattcttagattgcaatccacagctgcaatccctaagactcaaaaaggtgtcatcttttatgagaataaggggaacctgcattacaaagatatccctgtccccgag
    cctaagccaaatgaaattttaatcaacgttaaatattctggtgtatgtcacaccgatttacatgcttggcacggcgattggccattacctgttaaactaccattagtaggtggtcatgaa
    ggtgctggtgtagttgtcaaactaggttccaatgtcaagggctggaaagtcggtgatttagcaggtatcaaatggctgaacggttcttgtatgacatgcgaattctgtgaatcaggtcat
    gaatcaaattgtccagatgctgatttatctggttacactcatgatggttctttccaacaatttgcgaccgctgatgctattcaagccgccaaaattcaacagggtaccgacttggccgaa
    gtagccccaatattatgtgctggtgttactgtatataaagcactaaaagaggcagacttgaaagctggtgactgggttgccatctctggtgctgcaggtggcttgggttccttggccgtt
    caatatgcaactgcgatgggttacagagttctaggtattgatgcaggtgaggaaaaggaaaaacttttcaagaaattggggggtgaagtattcatcgactttactaaaacaaagaatatg
    gtttctgacattcaagaagctaccaaaggtggccctcatggtgtcattaacgtttccgtttctgaagccgctatttctctatctacggaatatgttagaccatgtggtaccgtcgttttg
    gttggtttgcccgctaacgcctacgttaaatcagaggtattctctcatgtggtgaagtccatcaatatcaagggttcttatgttggtaacagagctgatacgagagaagccttagacttc
    tttagcagaggtttgatcaaatcaccaatcaaaattgttggattatctgaattaccaaaggtttatgacttgatggaaaagggcaagattttgggtagatacgtcgtcgatactagtaaa
    taatagcgtgttacgcacccaaacttttatgaaagtctttgtttataatgatgaggtttataaatatatagtggagcaaagattaatcactaaatcaagaagcagtaccagtattttttc
    tatatcaagtagtgataatggaaatagcccaaatttggcttccgtcgac
    AT

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 310
    Points
    310
    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
    var b:array[char]of integer;
        i:integer;
        t:string;
    const
        x:string=('acgtu');//ordre importe peu ici
    begin
        t:=richedit1.text;
        for i:=1 to length(x) do b[x[i]]:=0;
        for i:=1 to length(t) do inc(b[t[i]]);
        for i:=1 to length(x) do ListBox1.Items[i-1]:= x[i]+': ' +inttostr(b[x[i]]);
        ListBox1.Items[5]:= '--------' ;
        ListBox1.Items[6]:= 'Total: '+ inttostr(b[x[1]]+b[x[2]]+b[x[3]]+b[x[4]]+b[x[5]]);
    end;

  9. #9
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    Oui sgmsg en effet j'ai compris après que c'était une question d'initialisation du tableau

    Thanks sgmsg
    AT

  10. #10
    AT
    AT est déconnecté
    Membre régulier Avatar de AT
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 168
    Points : 85
    Points
    85
    Par défaut
    ok cela fonctionne, je dois mettre simplement en majuscule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    begin
        RichEdit1.Text:=ansiuppercase(RichEdit1.Text);
        t:=RichEdit1.text;
        for i:=1 to length(x) do b[x[i]]:=0;
        for i:=0 to length(t) do inc(b[t[i]]);
        for i:=1 to length(x) do ListBox1.Items[i-1]:= x[i]+': ' +inttostr(b[x[i]]);
        ListBox1.Items[5]:= '--------' ;
        ListBox1.Items[6]:= 'Total: '+ inttostr(b[x[1]]+b[x[2]]+b[x[3]]+b[x[4]]+b[x[5]]);
    end;
    AT

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

Discussions similaires

  1. Ajouter dynamiquement élements dans ListBox?
    Par roster dans le forum Silverlight
    Réponses: 10
    Dernier message: 02/04/2009, 21h36
  2. Moyen le plus efficace de dessiner un trait
    Par peter27x dans le forum Langage
    Réponses: 21
    Dernier message: 09/10/2008, 09h12
  3. Probleme ajout dans un listbox
    Par sentenza dans le forum IHM
    Réponses: 3
    Dernier message: 21/02/2008, 09h52
  4. Réponses: 1
    Dernier message: 27/03/2007, 18h22
  5. Réponses: 2
    Dernier message: 02/06/2005, 10h21

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