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 :

3 questions : Comment mettre une ligne du TListBox dans un TEdit ?


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut 3 questions : Comment mettre une ligne du TListBox dans un TEdit ?
    bonjour tout le monde, j'ai un probleme, quand j'importe une ligne du TListBox dans le TEdit par la fonction random, au lieu de me marquer un des mots que j'ai enregistré avec le bloc note et ouvert avec le TListBox, ca me met des chiffres comme ca par exemple : 577764766
    ma ligne de texte est :
    Editmot.Text := inttostr(random(ListBoxmots.ItemIndex));

    j'ai un autre probleme, c'est par exemple pour mettre des etoiles a la place de chaques lettres dans un autre TEdit, ca me met que la partie gauche n'est pas affectable :
    longeurmot := length(Editmot.Text);
    for i := 1 to longeurmot do
    Editmotcache.Text[i] := '*';

    derniere chose :
    est il possible de sauvegarder ce qu'il y a dans un TEdit sur notre PC et le re ouvrir directement des qu'on lance le programme ?

    merci à ceux qui me repondront.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    176
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 176
    Points : 123
    Points
    123
    Par défaut
    Bonsoir
    1-La fonction Random retourne une valeur numérique . Donc le résultat obtenu est cohérent. Utilise-la plutôt dans une variable : celle-ci sera l'index de ta ListBox.
    2-Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    longeurmot := length(Editmot.Text);
    Editmotcache.Text:=''; 
    for i := 1 to longeurmot do
    Editmotcache.Text:= Editmotcache.Text+'*';
    3-Oui ! Il suffit d'enregistrer un fichier-texte et de le relire à chaque lancement de ton application (consulte la FAQ sur les fichiers).
    Amicalement;
    Alain
    Ce qui est simple et évident pour soi-même ne l'est pas forcément pour les autres... et réciproquement !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    merci beaucoup alain
    le 2) marche nickel
    mais pourrait tu re expliquer le 1)
    ou me le montrer stp, j'ai pas trop suivi

    sinon pour le 3) je vais aller voir sur ce que tu m'as dit

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Citation Envoyé par morganox Voir le message
    mais pourrait tu re expliquer le 1)
    ou me le montrer stp, j'ai pas trop suivi
    Comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      with ListBoxMots do
        EditMot.Text := Items[Random(Items.Count - 1)];
    @+ Claudius

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    merci beaucoup, ca marche nickel

    une autre petite question
    si la lettre que je rentre avec le clavier est derriere un etoile, comment je fais pour enlever l'etoile correspondant à la lettre et y mettre la lettre a la place ?

    for i := 1 to longeurmot do
    if Editmot.Text[i] = lettre then
    Editmotcache.Text[i] := lettre
    else
    lettrejuste := false;

    ca, ca ne marche pas et ca me met types incompatibles entre string et char

  6. #6
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Euh, tu fais le jeu du pendu ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    oui c'est ca et j'y arrive pas trop sur certains points, c'est pour ca que je demande de l'aide

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    C'est bien ce que je pensais.

    C'est marrant je ne l'ai jamais fait ce jeu.

    Bon je vais te laisser te creuser la tête.

    Ce dont tu as besoin:
    • Une liste de mots parmi lesquelles il faudra sélectionner un mot à découvrir: Ca c'est fait
    • une variable qui va contenir le mot à découvrir choisi aléatoirement: c'est fait aussi
    • une autre variable (initialement remplis d'étoiles et de longueur identique au mot à trouver), dans laquelle tu vas renseigner les lettres au fur et à mesure qu'elles seront trouvées.


    Le principe est simple:
    1. Choisir un mot à découvrir
    2. Initier ton mot caché (avec les étoiles)
    3. Décourvir les lettres (si trouvées) à chaque proposition du joueur
    4. Tester si le mot est trouvé (et faire un cadeau au vainqueur)


    Je te laisse t'y plonger, si tu as des problèmes pour implémenter tout ça, par exemple isoler les lettres à découvrir, présente ton bout de code et pose ta question. On te filera un coup de main.

    @+ Claudius

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    a vrai dire, j'ai commencé depuis 1 semaine et j'ai tout fait sauf les 2 points suivants :
    1) remplacer l'etoile par la lettre si l'utilisateur en a trouvé une de bonne
    2) sauvegarder les resultat, le classement c'est bon, mais c'est sauvegarder, par contre j'ai fais sous la forme de TEdit pour chaques nom et scores etants dans le top 5

    c'est pour ca, je suis bloqué et je ne sais pas trop quoi faire.

    merci de m'aider ou de me diriger vers des solutions, meme si je dois y reflechir apres ...

    merci quand meme a vous tous

  10. #10
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Pour develloper un peu plus la partie affichage de la lettre:

    Tu as 2 "mots" de la meme longueur, l'un caché par des etoiles, l'autre en claire.
    Le joueur donne une lettre
    Tu verrifie qu'elle se trouve dans le mot en claire [Edit] Aller celle la je te la donne pour que tu puisse commencer, regarde la function Pos[/Edit]
    ->Si non passe son tour
    ->Si oui
    tu dois reperer la ou les position(s) ou se trouve(nt) la lettre dans le mot en claire
    (regarde les functions qui se trouve dans StrUtils) et remplacer dans le mot cacher les etoiles correspondantes par la lettre choisi par le joueur.

    exemple:
    Bonjour
    *******
    le joueur donne la lettre 'o', elle est presente en 2eme et 5eme position
    Tu doit donc optenir
    *o***o**

    Comme l'a dit Claudius commence a imaginer ton code a partir de ca et propose ta solution

    a++
    qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    merci a tous, je vais y reflechir et je vous tiens au courant

    excuse moi mais je trouve pas les deux choses : stredit et pos/edit

  12. #12
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Re
    Non Edit n'a rien a voir, j'ai mis ca pour signaler la partie de mon message que j'avais modifié, la function est pos
    Tape Pos dans ton editeur delphi clique dessus et appuie sur F1
    En se qui concerne l'unité StrUtils, tape LeftStr et appui sur F1, LeftStr fait partie de l'unité StrUtils, dans l'aide clique sur le lien StrUtils et tu auras accé a toutes les functions qu'elle regroupe.
    Bon courrage
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    merci beaucoup a toi, si j'y arrive toujours pas, je laisserai un message ici pour dire ce qui me gene.
    pour info, faire 2 edits, un pour le mot normal mais qui n'est pas visible et un autre pour le mot mais avec des etoiles, c'est ce que j'ai deja fais
    encore merci a vous

  14. #14
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Poue le mots cacher effectivement il doit etre a la vu du joueur donc un Edit est une solution, par contre plutot que d'utiliser un edit pour mettre le mot selectionner tu peux le mettre dans une variable String qui tu declarera comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var MotATrouver : String;
    Ensuite dans ton code tu te sert de MotATrouver comme tu te serais servi du edit2.text.

    Si on reprend le code de Claudius ca donnerai ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     with ListBoxMots do
        MotATrouver := Items[Random(Items.Count - 1)];
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    salut a tous
    tout d'abbord, au debut faut il que je mette ca ?
    if Editmot.Text[i] = lettre then

    sinon je viens de marquer ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        for i := 1 to longeurmot do
          Pos(lettre,Editmot.Text);
    ca me le compile, mais comment je fais pour mettre la lettre à la place de l'etoile ?

    c'est ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          Editmotcache.Text[i] := lettre;

  16. #16
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    J'avais ecrit un grand poste mais je me rend compte que j'avais ratté un des tien , plus haut tu as donné ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i := 1 to longeurmot do
      if Editmot.Text[i] = lettre then
        Editmotcache.Text[i] := lettre
      else
        lettrejuste := false;
    Dans ce code tu as bien compris que le i est le point commun entre ton mot claire et ton mot caché, ton code me parait juste donc quel est ton probleme exactement. Je ne sais pas ou tu initialise et utilise lettrejuste, mais tu ne lui attribu jamais true?

    Pour l'erreur de compilation entre string et char ca n'est pas tres grave, en faite une string et composé de plusieur char(caractere) quand tu fait MonMot[2] tu fait reference au 2eme caracteres (au 2eme char),
    Tu as donc 2 solutions qui se presente
    1. Prendre le 1er caractere
      Une string qui contient une seul lettre n'en est pas pour autant un char, admetons
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
       
      var MaChaine : String; 
           MonChar : Char;
       
      MaChaine := 'a';
      MonChar := MaChaine; //[Erreur] : Types incompatibles : 'Char' et 'String'
      Pour que MaChaine soit interpreter comme un char tu peux faire comme suit
    2. La declaration de la variable lettre en type Char
      Tu peux egalement declarer tout simplement lettre comme etant un type char, comme cela



    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  17. #17
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    il faut que tu passe par une variable intermediaire
    pour avoir le nom a decouvrir
    le edit n'est la que pour l'affichage des lettre decouverte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if  Pos(lettre,Motsatrouver) > 1 Then
    begin
      for i:= 1 to length(longeurmot) do 
       if Motsatrouver[i] =   lettre Then
         Editmot.Text[i] := lettre
    end
    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    mais regarde, j'ai rentré ca et ca me met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      if  Pos(lettre,Editmotcache.Text) > 1 Then
          begin
          for i:= 1 to longeurmot do
            if Editmot.Text[i] =   lettre Then
              Editmotcache.Text[i] := lettre;
          end
    ca me met : la partie de gauche n'est pas affectable

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 8
    Points
    8
    Par défaut
    voila xactement comment tout est défini :

    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
     
    var 
      Form1: TForm1;
      lettre: char;
      longeurmot : integer;
     
    procedure TForm1.ButtontestcorrectionClick(Sender: TObject);
    var
      i : integer;
      lettrejuste : boolean;
    begin
      longeurmot := length(Editmot.Text);
      if Editresultat.Text = 'partie en cours' then
        begin
        if  Pos(lettre,Editmotcache.Text) > 1 then
          for i:= 1 to longeurmot do
            if Editmot.Text[i] = lettre then
              begin
              Editmotcache.Text[i] := lettre;
              lettrejuste := true;
              end
            else
              lettrejuste := false;
    editmot est le mot ecrit normallement mais invisible pour le joueur
    editmotcache est celui qui a les etoiles au debut et la ou s'affichent les lettres trouvées
    editresultat : on s'en fou pour ca

  20. #20
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Tu devrais travailler avec des variables string ca fonctionnerai mieux, par contre je suis pas trop alaise pour te dire le pourquoi de la non affectabilité de Edit.Text[i] mais je pense que .text n'est pas fait pour pointer sur un caractere
    Essai plutot comme cela

    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
     
    Var
      MotCache, MotATrouver : String;
      [...]
    begin
    //On affecte les valeur
    MotCache := ;
    MotATrouver := Editmot.Text;
    [...]
     
    //On controle si la lettre choisi par l'utilisateur apparait dans le mot a trouver
    if Pos(lettre,MotCache) > 1 Then
       for i:= 1 to longeurmot do
         if MotATrouver[i] = lettre Then
           MotCache[i] := lettre;
         end
     
    //Ensuite on reafecte la chaine codé avec ses nouvelles lettre potentiellement decouverte
    Editmotcache.Text := MotCache;
    Comme on te l'a fait remarquer plus haut il serait mieux que lorsque le mot est choisi aleatoirement il soit placer dans une variable plutot que dans un Edit.
    En effet il est inutil(?) je pense que tu affiche le mot a trouver sur ta form.

    Si tu souhaite utiliser une variable plutot qu'un Edit comme on te le conseil declare MotATrouver non plus dans la procedure, mais dans la partie private de ta form.
    Pour que ca fonctionne bien n'oubli pas de modifier ton code pour faire reference non plus a Editmot.Text mais a MotATrouver notement dans la partie selection du mot a trouver.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/09/2011, 15h45
  2. [VBA-E]Comment mettre une ligne entière d'un fichier excel en gras ?
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/05/2006, 08h23
  3. Réponses: 7
    Dernier message: 21/03/2006, 13h01
  4. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40
  5. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03

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