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 :

fonction mal faite ?


Sujet :

Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut fonction mal faite ?
    Bonsoir^^
    quelqu'un saurait ce qui provoque une erreur dans le programme ?
    Apparemment ça arrive dés que la fonction separe() est appelée.

    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
    type
      Tmaliste = array of ShortString;
      TForm1 = class(TForm)
        Label2: TLabel;
        Button1: TButton;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      temp:ShortString;
      tableau:Tmaliste;
     
    implementation
     
    {$R *.DFM}
     
    //... Sépare les mots d'une chaine qui sont liés par le séparateur indiqué .....................
    function separe(chaine : ShortString; sep : char): Tmaliste;
    var i,m:integer;
        phrase,mot:ShortString;
        car:char;
    begin
      temp:='''';
      phrase:=chaine;
      m:=0;
      if (chaine<>'''') then
      begin
        mot:='''';
        for i:=0 to (length(phrase)-1) do
        begin
          car:=phrase[i];
          if (car=sep) then
          begin
            result[m]:=mot;
            inc(m);
            temp:=temp+mot+'' '';
            mot:='''';
          end else mot:=mot+car;
        end;
      end;
      Form1.Label2.caption:=temp;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.text:=''pied*velo*auto*train*'';
      temp:=Edit1.text;
      tableau:=separe(temp,''*''); // ERREUR ici !
    end.
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    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 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    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
    //... Sépare les mots d'une chaine qui sont liés par le séparateur indiqué .....................
    function separe(chaine : ShortString; sep : char): Tmaliste;
    var 
      i          : integer;
      mot : ShortString;
      car            : char;
    begin
      temp:='';
      if (chaine<>'') then
      begin
        mot:='''';
        for i:=1 to pred(length(chaine)) do
        begin
          car:=chaine[i];
          if (car=sep) then
          begin
              
                setlength(result,length(result)+1);
                result[high(result)]:=mot;
                    
                temp:=temp+mot+' ';
                mot:='';
          end 
          else 
            mot:=mot+car;
        end;
      end;
      if trim(mot) <> '' Then
      begin
       
        setlength(result,length(result)+1);        
        result[high(result)]:=mot;
        temp:=temp+mot+' ';
        mot:='';
            
      Form1.Label2.caption:=temp;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.text:='pied*velo*auto*train';
      temp:=Edit1.text;
      tableau:=separe(temp,'*'); 
    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

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 436
    Points : 1 328
    Points
    1 328
    Par défaut Erreur !
    Bonjour,

    @ Anapurna, je viens de tester ta fonction, mais si elle ne provoque plus d'erreur à la compilation, le résultat dans le label est incomplet.

    En effet si,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Edit1 := 'pied*velo*auto*train';
    on devrait obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Label1.caption := 'pied velo auto train';
    et on obtient avec ta fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Label1.caption := 'pied velo auto trai';
    Il manque 1 caractère soit le dernier !

    @+,

    Cincap

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 436
    Points : 1 328
    Points
    1 328
    Par défaut Je propose ceci !
    @ Anapurna, avec ceci c'est correct, sans aucune fonction :

    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
    procedure TForm1.BTestClick(Sender: TObject);
    var
    MaListe: TStringList;
    i: Integer;
    cont: string;
    valeur: string;
    begin
    MaListe:=TStringList.Create;
    
    cont := Edit1.text; // ou = à  'pied*velo*auto*train';
    
    MaListe.Text:=StringReplace(cont,'*',#13#10,[rfReplaceAll]);
    for i:= 0 to MaListe.Count-1 do begin
    valeur:= MaListe.Strings[I];
    ShowMessage(valeur);
    end;
    FreeAndNil(MaListe);
    end;
    ou modifier ta fonction :

    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
    function separe(chaine : ShortString; sep : char): Tmaliste;
    var
      i          : integer;
      mot : ShortString;
      car            : char;
    begin
      temp:='';
      if (chaine<>'') then
      begin
        mot:= ''; // et non '''';
        for i:=1 to pred(length(chaine)+1) do
        begin
          car:=chaine[i];
          if (car=sep) then
          begin
    
                setlength(result,length(result)+1);
                result[high(result)]:=mot;
                    
                temp:=temp+mot+' ';
                mot:='';
          end
          else 
            mot:=mot+car;
        end;
      end;
      if trim(mot) <> '' Then
      begin
       
        setlength(result,length(result)+1);
        result[high(result)]:=mot;
        temp:=temp+mot+' ';
        mot:='';
    
     Form1.Label1.caption:=temp;
    end;
    end;
    @+,

    Cincap

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    746
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 746
    Points : 500
    Points
    500
    Par défaut
    salut,

    ou aussi ..
    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
     
    //---------------------------------------------------------------------
    procedure ExtraitInfo(sep:char;chaine:string; var resultat:Tstringlist);
    var temp:string;
        P:integer;
    begin
       while chaine<>'' do
       begin
           temp:=chaine;
           P:=pos(sep,chaine);
           if P=0 then chaine:=''
           else
           begin
               delete(chaine,1,P);
               delete(temp,P,length(chaine));
           end;
           resultat.Add(temp);
       end;
    end;
    //---------------------------------------------------------------------
     
    // test
    procedure TForm1.Button1Click(Sender: TObject);
    var L:Tstringlist;
        i:integer;
    begin
        L:=Tstringlist.Create;
        ExtraitInfo('*','toto*tata*tutut*yyiy',L);
        for i:=0 to L.count-1 do memo1.Lines.add(L[i]);
        L.Free;
    end;
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 436
    Points : 1 328
    Points
    1 328
    Par défaut Excellent !
    @ petitcoucou31, il faut un Tmemo et non Tedit pour l'utilisation de ta fonction, sinon c'est correct.

    Elle peut s'appliquer avec un Tedit ?

    @+,

    Cincap

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 434
    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 434
    Points : 5 846
    Points
    5 846
    Par défaut
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i:=1 to pred(length(chaine)+1) do
    remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         for i:=1 to length(chaine) do

    @+ 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

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 436
    Points : 1 328
    Points
    1 328
    Par défaut Bien entendu !
    @ Anapurna l'homme qui soulève des montagnes !

    Bien entendu, c'est correct.

    Par contre si on laisse ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    begin
      temp:='';
      if (chaine<>'') then
      begin
        mot:= '''';
    au lieu de mot := '';

    On perd aussi le dernier caractère soit '

    Je viens de tester toujours avec cette fonction ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Edit2.text:='pied*velo*auto*train*avion*bateau'; //en enlevant bateau uniquement
    pour ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Edit2.text:='pied*velo*auto*train*avion*';
    Et la aucun changement.

    @+,

    Cincap

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Heu.....

    Merci mais bon je fais quoi moi après cette discussion de spécialistes
    Je sais pas quelle version je dois comprendre, lol

    Merci de votre participation en tous cas


    ha oui au fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         for i:=1 to length(chaine) do
    Une chaine ça commence pas à 0 ? heu un tableau ?


    Et si tu avais ça dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit2.text:='pied*velo*auto*train*avion*bateau'; //en enlevant bateau uniquement
    pour obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit2.text:='pied*velo*auto*train*avion*';
    C'est que tu as oublié l'etoile "*" à la fin de bateau, car ma fonction est sensée récupérer d'une phrase source toutes les sous-chaines séparées par "*", mais il faut (dans ma fonction en tous cas) qu'une étoile soit à la fin de la phrase source (si j'utilise l'étoile comme séparateur bien sûr^^).

    Là par exemple dans le premier code d'Anapurna :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.text:='pied*velo*auto*train'; //içi

    EDIT :

    J'ai testé le premier code de cincap ça marche Nickel :

    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.BTestClick(Sender: TObject);
    var
    MaListe: TStringList;
    i: Integer;
    cont: string;
    valeur: string;
    begin
    MaListe:=TStringList.Create;
     
    cont := Edit1.text; // ou = à  'pied*velo*auto*train';
     
    MaListe.Text:=StringReplace(cont,'*',#13#10,[rfReplaceAll]);
    for i:= 0 to MaListe.Count-1 do begin
    valeur:= MaListe.Strings[i];
    ShowMessage(valeur);
    end;
    FreeAndNil(MaListe);
    end;
    Mais si j'avais mis une fonction c'est parce que je veux recevoir le résultat dans un tableau en retour de la fonction ^^ c'est pas le cas avec Showmessage.
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  10. #10
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Je suis reparti de ton programme. Voilà le résultat

    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
    unit Ex01a;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      Tmaliste = array of ShortString;
     
      TForm1 = class(TForm)
        Button1: TButton;
        Label2: TLabel;
        Edit1: TEdit;
        procedure Button1Click(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      Form1: TForm1;
      temp:ShortString;
      tableau:Tmaliste;
     
    implementation
     
    {$R *.DFM}
     
    //... Sépare les mots d'une chaine qui sont liés par le séparateur indiqué .....................
    function separe(chaine : ShortString; sep : char) : Tmaliste;
    var i1,taille,position:integer;
        mot:ShortString;
        t1 :Tmaliste;
    begin
      taille := 1 ;
      for i1 := 1 to Length(chaine)-1 do
        if chaine[i1] = sep then
          taille := taille + 1 ;
      SetLength (t1, taille) ;
      position := -1 ;
      while pos(sep,chaine) > 0 do // tant que l'on trouve un séparateur
      begin
        // extraction du mot
        mot := copy (chaine,1,pos (sep,chaine)-1) ;
        // Suppression de la partie traitée
        delete (chaine,1,pos (sep,chaine)) ;
        position := position + 1 ;
        t1[position] := mot ;
      end ;
      if chaine <> '' then
      begin
        position := position + 1 ;
        t1[position] := chaine ;
      end ;
      result := t1 ;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i1 : integer ;
    begin
      Edit1.text:='pied*velo*auto*train*';
      tableau:=separe(Edit1.text,'*');
      temp := '' ;
      for i1 := 0 to SizeOf (tableau)-1 do
        temp := temp + ' ' + tableau[i1] ;
      Label2.caption := temp ;
    end;
    end.

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    ALWEBER Impecc !!!

    Bon je prend^^
    Merci à tous, que c'est super ces échanges d'idées, vive vous et développez.com !!!!!!!!!
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 436
    Points : 1 328
    Points
    1 328
    Par défaut Je n'ai pas oublié * !
    @ Dragonno, je n'ai pas oublié *, c'est uniquement pour tester ta fonction.

    @ ALWEBER, avec ta fonction, j'ai un bug en effet si j'ajoute un élément dans le Tedit, il ne s'affiche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Edit1.text:='pied*velo*auto*train*avion*';
    Même chôse si on supprime !

    @+,

    Cincap

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 436
    Points : 1 328
    Points
    1 328
    Par défaut Sans fonction !
    @ Dragonno, en reprenant mon exemple sans fonction et en éliminant le résultat par message et le faire apparaître dans un Tlabel.

    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
     
    procedure TForm1.BTestClick(Sender: TObject);
    var
    MaListe: TStringList;
    i: Integer;
    cont: string;
    valeur: string;
    begin
    MaListe:=TStringList.Create;
     
    cont := edit1.text ;//'pied*velo*auto*train';
     
    MaListe.Text:=StringReplace(cont,'*',#13#10,[rfReplaceAll]);
    for i:= 0 to MaListe.Count-1 do begin
    valeur:= MaListe.Strings[I];
    //ShowMessage(valeur);
     
    label1.Caption := MaListe.text;
    end;
    FreeAndNil(MaListe);
    end;
    Le résultat est affiché dans le label sous forme d'un tableau !

    @+,

    Cincap

  14. #14
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    746
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 746
    Points : 500
    Points
    500
    Par défaut
    salut

    Pour Cincap.
    @ petitcoucou31, il faut un Tmemo et non Tedit pour l'utilisation de ta fonction, sinon c'est correct.
    Désolé mais, je comprends pas ce que tu dis ?
    procedure ExtraitInfo(sep:char;chaine:string; var resultat:Tstringlist); n'a ni besoin d'un Tmemo ou d'un Tedit.

    Elle peut s'appliquer avec un Tedit ?
    elle reçoit un String , donc récupère tout ce qui est de type string, TLabel , Tedit , Tmemo.. et retourne une liste de string.

    bye
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 436
    Points : 1 328
    Points
    1 328
    Par défaut Voila pourquoi !
    @ petitcoucou31, voila pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.Button1Click(Sender: TObject);
    var L:Tstringlist;
        i:integer;
    begin
        L:=Tstringlist.Create;
        ExtraitInfo('*','toto*tata*tutut*yyiy',L);
        for i:=0 to L.count-1 do memo1.Lines.add(L[i]);    L.Free;
    end;
    Avec ta fonction, le résultat indique le nom + l'* en utilisant ce texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //edit1.text := pied*velo*auto*train*avion*
    
    procedure TForm1.Button1Click(Sender: TObject);
    var L:Tstringlist;
        i:integer;
    begin
        L:=Tstringlist.Create;
        ExtraitInfo('*',edit1.text,L);
        for i:=0 to L.count-1 do memo1.Lines.add(L[i]);    L.Free;
    end;
    Excuse, mais je ne vois pas comment afficher le résultat dans un Tlabel.

    @+,

    Cincap

  16. #16
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    @ Dragonno, en reprenant mon exemple sans fonction et en éliminant le résultat par message et le faire apparaître dans un Tlabel.
    Okkkkk (se réveille^^) merci beaucoup cincap
    Vous êtes vraiment super, les programmeurs de ce forum ça c'est sûr !
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

  17. #17
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    746
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 746
    Points : 500
    Points
    500
    Par défaut
    re

    je ne prenais pas bonne ligne exemple pied*velo*auto*train*avion*
    mais j'avais pas vu que la ligne se terminé par un "*" !

    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
    procedure ExtraitInfo(sep:char;chaine:string; var resultat:Tstringlist);
    var temp:string;
        P:integer;
    begin
       while chaine<>'' do
       begin
           temp:=chaine;
           P:=pos(sep,chaine);
           if P=0 then chaine:=''
           else
           begin
               delete(chaine,1,P);
               delete(temp,P,length(temp));
           end;
           resultat.Add(temp);
       end;
    end;
    
    // valeur du edit1.text:=pied*velo*auto*train*avion*
    procedure TForm1.Button1Click(Sender: TObject);
    var L:Tstringlist;
        i:integer;
    begin
        memo1.clear;
        edit1.Text:='pied*velo*auto*train*avion*';
        L:=Tstringlist.Create;
        ExtraitInfo('*',edit1.text,L);
        for i:=0 to L.count-1 do
        begin
            memo1.Lines.add(L[i]);
            edit2.Text:=edit2.Text+' '+L[i];
            label2.caption:=label2.caption+' '+L[i];
        end;
        L.Free;
    end;
    Dans le code tu as l'affichage pour un Tlabel, ou un Tedit..
    Le résultat est stocké sous forme de liste dans L.


    bye.
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  18. #18
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    598
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 598
    Points : 628
    Points
    628
    Par défaut
    Merci titcoucou ^^

    Que c'est super^^ me voilà avec plein de méthodes c'est l'abondance héhé
    Cliquez ici et reprenez le pouvoir !
    A bas IE !, Google, et le pistage du net, testons DuckDuckGo.com
    Lords Of The Realm II Download : Lords of the realm 2
    Infos en anglais :Ici

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 436
    Points : 1 328
    Points
    1 328
    Par défaut
    Bonjour à toutes et à tous,

    @ Petitcoucou31, je constate avec ta fonction que c'est vrai que le résultat attendu est correct avec le TMemo parceque, tu prends la peine d'éffacer le 1er texte à chaque click du TButton.

    Par contre avec Tedit et Tlabel, déja les mots s'affichent avec un décalage par rapport au bord et si on ajoute un mot terminé par *, dans le Tedit, tous les mots sont affichés à la suite des 1er ainsi que dans le TLabel même problème si on efface un mot.

    Ceci étant dit, je pense que Dragonno a trouvé son bonheur dans toutes ses solutions.

    @+,

    Cincap

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/03/2007, 13h43
  2. Filtre mal fait
    Par Jaimelot dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 15/03/2007, 18h38
  3. Fonction mal appelée ?
    Par Dsphinx dans le forum Langage
    Réponses: 3
    Dernier message: 21/11/2006, 16h15
  4. fonction qui fait le tri d'une Table de BDD
    Par devlopassion dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/10/2006, 15h28
  5. Réponses: 1
    Dernier message: 18/05/2006, 16h00

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