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 :

Arrangements dans un ListBox


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 44
    Points
    44
    Par défaut Arrangements dans un ListBox
    Bonsoir,
    Je simule le lancer de 2 dés sur un grand nombre de coups (1000).
    Le résultat est enregistré dans un fichier texte.
    Exemple :
    1 ;5
    2 ;1
    6 ;3
    Je voudrais faire un tableau dans une listbox, qui me donnera la fréquence de sortie de chaque duo :
    Exemple :
    1 ;2…sorti X fois
    1 ;3…sorti X FOIS
    ..
    ..
    5.6…sorti X fois

    Merci

  2. #2
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Ecrire dans un fichier, puis le relire et devoir manipuler chaque ligne pour extraire les valeurs et les placer dans une liste, ne serait-ce pas plus simple de travailler avec une table et d'utiliser les composants ContrôleBD ?

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 669
    Points : 5 238
    Points
    5 238
    Par défaut
    +1
    Après il faut voir ce qui prend le moins de temps en temps de traitement et si tu dois absoluement stocker tous les tirages. Je vois deux solutions

    La première avec une table contenant juste un Id et ton couple de valeur. Dans ce cas tu fais un insert à chaque tirage et à la fin du fait un petit "Select COUNT(...)". tu auras donc 1000 enregistrement à parcourir lors du count et cela prendra de la place dans ta base !

    La deuxième avec toujours une table mais cette fois elle contient en plus, le nombre de fois où le tirage a été réalisé et donc initialisé à 0. En plus de la table tu déclare un tableau dont la structure est la même que celle de la table. A chaque tirage, tu teste le couple de valeur et tu incrémente le nombre correspondant. A la fin tu peux insérer dans la uniquement les couples valeurs avec le nombre de fois où sont sortis.

    D'ailleurs si tu n'a pas besoin de stocker les tirages ni le nombre de fois où il sont sortis mais uniquement de les afficher dans une listBox, tu n'a meme pas besoin d'une base de données ni de fichier, il te suffit de travailler sur le tableau

  4. #4
    Membre du Club
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 44
    Points
    44
    Par défaut Arrangements dans listbox
    Bonjour,

    Merci de vos conseils....mais je vais devoir me mettre à étudier :
    Base de données en delphi...car je ne l'ai jamais fait

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 421
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 421
    Points : 1 325
    Points
    1 325
    Par défaut Forcément, nous sommes ou ?
    Bonjour à toutes et à tous,

    @ tous ceux qui nous aident volontairement et gratuitement, nous sommes bien à la rubrique "Débutants" donc la question suggère une aide, un bout de code, un aiguillage.

    @+,

    Cincap

  6. #6
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par fermat Voir le message
    Bonjour,

    Merci de vos conseils....mais je vais devoir me mettre à étudier :
    Base de données en delphi...car je ne l'ai jamais fait
    Bonne chance lol je n'ai pas encore pu comprendre comment créer et dialoguer avec une DB Access. C'est plutôt compliqué. Je n'ai d'ailleurs pas encore trouvé de tutoriel bien fait pour comprendre cela la plupart du temps il faut déjà connaître pour comprendre.

  7. #7
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 669
    Points : 5 238
    Points
    5 238
    Par défaut
    Citation Envoyé par cbegood Voir le message
    Bonne chance lol je n'ai pas encore pu comprendre comment créer et dialoguer avec une DB Access. C'est plutôt compliqué. Je n'ai d'ailleurs pas encore trouvé de tutoriel bien fait pour comprendre cela la plupart du temps il faut déjà connaître pour comprendre.
    C'est comme dans toute chose. Exemple avec du vécu : j'ai connu un mec qui voulait créer un logiciel pour gérer ses compte alors qu'il ne savait pas faire la différence entre débit et crédit.

    De la même manière avant d'envisager de dialoguer via ton application avec une base de données, il faut déjà savoir comment fonctionne une base de données.

    Google est ton ami. Tu tapes "access" et tu as toutes les docs que tu veux sur Access et même sur le SQL.

    Une fois que tu connais Access tu tapes "access + delphi" toujours sur google et tu as autant de tutos que tu veux.

    Bref, tout ça pour dire que les gens qui te répondent sur le forum ne sont pas là pour faire les démarches d'apprentissage à ta place. Chaque personne qui te répond à été dans la même situation que toi un jour.

    Voici plusieurs lien pour t'aider dans chaques étapes (3 pour être exact)
    1) Access : http://www.lecompagnon.info/access/index.html
    2) SQL : http://sqlpro.developpez.com/cours/sqlaz/fonctions/
    3) ADO : http://thierryaim.developpez.com/tut...dodelphiperso/

  8. #8
    Membre du Club
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 44
    Points
    44
    Par défaut arrangements
    Bonsoir,

    Popo, je te remercie pour tes conseils.
    J' ai pratiqué Acces il y a quelques années.

    En ce qui concerne la question posée sur les sorties de 2 dés....j'ai procédé différemment...et je coince actuellement.

    Merci pour l'aide.

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 669
    Points : 5 238
    Points
    5 238
    Par défaut
    Dans ce cas, il faut nous expliquer comment tu as procédé et à quel endroit tu coinces avec si possible un petit bout de code.

  10. #10
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Ton application est tellement simple qu'elle ne nécessite pas de grandes connaissances des bases de données.
    Seule la notion de table est nécessaire et dans ton cas, on peut considérer la table comme un tableau à 3 colonnes :
    Colonne 1, tirage dé 1
    Colonne 2, tirage dé 2
    Colonne 3, fréquence

    Commences par déposer un composant Table de la palette "AccèsBd" sur ta fiche.
    Dans l'évènement OnCreate de ta fiche, tu places le code suivant
    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
    procedure TForm1.FormCreate(Sender: TObject);
    begin   //  Crée la table à la premère exécution
     if Not FileExists(ExtractFilePath(Application.ExeName) + '\TirageDé.Db') then
     with Table1 do
     begin
       Active := False;
       TableType := ttParadox;
       TableName := ExtractFilePath(Application.ExeName) + '\TirageDé.Db';
       with FieldDefs do
       begin
         Clear;
         Add('De1', ftInteger, 0, True);
         Add('De2', ftInteger, 0, True);
         Add('Freq', ftInteger, 0, True);
       end;
     CreateTable; //  Création de la table "TirageDé.Db "dans le dossier de l'application
     end;
    end;
    Ensuite, remplacer les opérations d'écriture dans le fichier .Txt de l'application par les instructions d'écriture dans la table de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Table1.Close;  // Fermeture de la table pour le cas où elle serait ouverte
      Table1.TableName := ExtractFilePath(Application.ExeName) + '\TirageDé.Db';
      Table1.Open;                       //  Ouverture de la table
      Table1.Append;                     //  Attribution du mode insertion à la table
      Table1.FieldValues['De1'] := De1;  //  Affectation de la valeur De1 au champs De1
      Table1.FieldValues['De2'] := De2;  //  Affectation de la valeur De2 au champs De2
      Table1.FieldValues['Freq'] := Freq;//  Affectation de la valeur Freq au champs Freq
      Table1.Post;                       //  Écriture des valeurs dans la table
      Table1.Close;                      //  Fermeture de la table
    Le composant DbGrid de la palette "ContrôleBd" permet de visualiser les données.

    Bon amusement

  11. #11
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    La fréquence ne serait pas donnée par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select De1, De2, count(*) from TirageDé
    group by De1,De2
    ? Sinon l'interêt de la table est assez limité non?

    (je ne connais pas paradox, ni ses limites)
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  12. #12
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Bien vu, mais il me semblait que fermat voulait faire apparaitre ses trois valeur dans un tableau.
    Selon ce que j'ai compris, il a les valeurs des tirages des 2 dés et il augmente la valeur de la fréquence chaque fois que le tirage sort.
    Dans ta solution, il entre uniquement les tirages et la fréquence apparait automatiquement dans une liste accolée au tableau des tirages.

    A fermat de choisir.

    A part cela,
    ? Sinon l'intérêt de la table est assez limité non?
    Plus facile d'écrire dans une table et de la lire que de manipuler un fichier txt.

  13. #13
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Je me suis mal exprimé, je pensais que si l'on mettait la fréquence dans la structure de la table, du coup la table ne devenait plus très utile.
    J'étais parti dans l'idée qu'il avait tous ses tirages dans un fichier texte et d'ensuite il faisait une analyse de fréquence.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  14. #14
    Membre du Club
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 44
    Points
    44
    Par défaut Arrangements
    Bonsoir,

    Je vous remercie de votre collaboration.
    J'apprécie votre démarche pédagogique, ce qui devrait-être très bénéfique pour ma progression.
    Je vais plancher sur le sujet......

    Merci

  15. #15
    Membre du Club
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 44
    Points
    44
    Par défaut
    Bonsoir,

    Je n'ai pas le composant Table dans la palette "AccèsBd"
    Table se trouve dans la palette 'BDE'

    J'ai table par la procédure suivante:
    outils\module base de données\fichier\ nouveau\table

    Comment faire?

  16. #16
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    outils\module base de données\fichier\ nouveau\table
    Cela n'a rien à voir, cela te permet de créer une table mais non de déposer un composant sur ta fiche.

    Je ne sais pas quelle version de Delphi tu as mais si tu n'as pas la palette "AccèsBD", le composant Table de la palette 'BDE' devrait convenir.

    Utilises le et suis la démarche que j'ai décrite.

  17. #17
    Membre du Club
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 44
    Points
    44
    Par défaut arrangements
    Bonsoir,

    J'utilise Delphi 7 entreprise.
    Peut-être me suis-je mal fait comprendre.
    Le résultat des lancers de 2 dés est un fichier.txt:
    5;3
    1;6
    etc..
    Je veux savoir combien de fois chaque couple apparaît:
    couple..1/2
    couple..1/3
    ...
    ...
    couple..5/6

    Comment intégrer ce fichier TXT dans la table?

    J'ai suivi la procédure que tu m'indiquais [Defluc], mais après avoir compilé le prog..j'ai bien 'form1'..avec aucune donnée...

    J'ai du 'louper un épisode'...

    Comment corriger cela

    Merci

  18. #18
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Points : 1 199
    Points
    1 199
    Par défaut
    Les choses sont un peu plus claires.
    Il faut extraire les valeurs du fichier Txt. Je suppose que tu peux effectuer cette opération.
    Ensuite, chaque couple de valeur doit être inséré dans la table au fur et à mesure de la lecture des lignes du fichier Txt.
    J'imagine que la lecture du fichier texte se fait dans une boucle du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.eof(FichierTxt) Do
    Une fois les tirages extraits dans la boucle, soit De1 et De2, l'insertion dans la table se fait par les instructions données dan mon message précédent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      Table1.Open;                       //  Ouverture de la table
      Table1.Append;                     //  Attribution du mode insertion à la table
      Table1.FieldValues['De1'] := De1;  //  Affectation de la valeur De1 au champs De1
      Table1.FieldValues['De2'] := De2;  //  Affectation de la valeur De2 au champs De2
      Table1.Post;                       //  Écriture des valeurs dans la table
      Table1.Close;                      //  Fermeture de la table

  19. #19
    Membre du Club
    Homme Profil pro
    Retraité Education Spécialisée
    Inscrit en
    Mai 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité Education Spécialisée

    Informations forums :
    Inscription : Mai 2006
    Messages : 64
    Points : 44
    Points
    44
    Par défaut Arrangements
    Bonjour,

    Defluc, je te remercie pour ta réponse concise.

    Je vais reprendre cela ultérieurement.

    Fermat

Discussions similaires

  1. recherche dans une listbox
    Par micknic dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/02/2005, 21h39
  2. Clique droit dans une ListBox
    Par LoicH dans le forum C++Builder
    Réponses: 5
    Dernier message: 07/02/2005, 22h50
  3. [debutant] supprimer elements dans une listbox
    Par F.F. dans le forum C++Builder
    Réponses: 8
    Dernier message: 02/07/2004, 11h38
  4. [WIN32]tabulation dans une listbox
    Par stoluup dans le forum MFC
    Réponses: 2
    Dernier message: 09/06/2004, 10h11
  5. Icône a coté du texte dans une ListBox
    Par joce3000 dans le forum C++Builder
    Réponses: 6
    Dernier message: 05/12/2003, 02h25

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