Aide TEdit entrer plusieurs valeurs [Résolu]

Messages postés
16
Date d'inscription
samedi 19 juillet 2008
Dernière intervention
20 juin 2012
- 19 mai 2011 à 12:57 - Dernière réponse :
Messages postés
16
Date d'inscription
samedi 19 juillet 2008
Dernière intervention
20 juin 2012
- 23 mai 2011 à 12:48
Bonjour,

Je suis débutant en Delphi .
je sollicite votre aide .
J'ai crée un champ Edit et je voudrais récuperer les valeurs que je rentre dedans .
Ce n'est pas une seule valeur, mais une liste de valeurs, que je veux séparer par des virgules.

Merci d'avance de votre aide
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
692
Date d'inscription
jeudi 17 avril 2008
Dernière intervention
14 septembre 2018
- 23 mai 2011 à 07:41
3
Merci
si je comprends bien tu as :
edit1.text := '1,2,3,4,5';
tu veux récupérer chaque valeur
donc :
edit2.text := mot(edit1.txt,1);
edit3.text := mot(edit1.txt,2);
edit4.text := mot(edit1.txt,3);
edit52.text := mot(edit1.txt,4);

Il faut juste changer dans la function MOT ces lignes : (si tu utilises la mienne !) :
m := pos(' ',h); en m := pos(',',h);
puisque ton séparateur est une virgule dans don exemple

PS : (pour les "pros") je n'ai pas utilisé posex qui simplifierais beaucoup cette procédure car il n'est pas compatible avec toutes les versions de Delphi
Dubois77

Merci dubois77 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de dubois77
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
- 19 mai 2011 à 14:32
0
Merci
Salut,

fait une recherche sur les sous-chaines.

Tu peux aussi utiliser mon unité "cyStrUtils.pas" inclue dans ce pack de compos ici:
Composants Cindy pour Delphi

Les focntions concernant les sous-chaines commencent par SubString ...

A+
Commenter la réponse de cs_MAURICIO
Messages postés
16
Date d'inscription
samedi 19 juillet 2008
Dernière intervention
20 juin 2012
- 19 mai 2011 à 14:48
0
Merci
Merci
Mais je vois pas ton unité "cyStrUtils.pas"
Commenter la réponse de dioufthier
Messages postés
2233
Date d'inscription
mardi 10 décembre 2002
Dernière intervention
15 décembre 2014
- 19 mai 2011 à 14:51
0
Merci
Dans le répertoire "cyComponents\Core"
A+


Composants Cindy pour Delphi
Commenter la réponse de cs_MAURICIO
Messages postés
16
Date d'inscription
samedi 19 juillet 2008
Dernière intervention
20 juin 2012
- 19 mai 2011 à 15:27
0
Merci
J'ai pas pu me retrouver avec ton unité
Mais je vais continuer a chercher.
Si jamais tu peux me proposer quelque chose de plus précis, je suis preneur
Merci
Commenter la réponse de dioufthier
Messages postés
692
Date d'inscription
jeudi 17 avril 2008
Dernière intervention
14 septembre 2018
- 19 mai 2011 à 19:52
0
Merci
Esaye cette petite procédure
function  MOT(h:string; n:integer=1):variant;
// si n=1, peut être omis :
// soit z = '5 toto 6 papa'
//nbre := mot(Z); renvoie 5 dans l'integer nbre;
//chaine := mot(z,2) renvoie 'toto' dans le string chaine
var m,i,l:integer;
begin
m := pos(' ',h);
if m=0 then
   begin
   result := h;
   exit
   end;
if n=1  // premier mot
   then begin
        result := copy(h,1,m-1);
        exit
        end;
l := length(h);
for i:=1 to n-1 do
    begin
    m := pos(' ',h);
    if m=0 then
       begin
       result := '';
       exit;
       end;
    h := trim(copy(h,m,l)); // on enlève le mot i
    end;
m := pos(' ',h);
if m=0
   then result := h
   else result := copy(h,1,m);
end;



Dubois77
Commenter la réponse de dubois77
Messages postés
260
Date d'inscription
lundi 27 octobre 2003
Dernière intervention
4 mars 2016
- 19 mai 2011 à 21:40
0
Merci
Salut,
@dubois77
Je pense que ta fonction peut-être remplacé simplement comme ceci (pas testé)
function Mot(h:string; n:integer=1):variant;
var
    T : TStringList;
begin
    T := TStringList.Create;
    try
        T.Delimiter := ' ';
        T.DelimitedText := h;
        if (T.Count <> -1) and (n <= T.Count) then
            Result := T.Strings[n-1]
        else
            Result := Format('Pas de mot en position %d',[n]);
    finally
        T.Free;
    end;
end;

@Dioufthier
Que cherche tu as faire exactement remplacer une chaine '5 toto 6 papa' par '5,toto,6,papa'
(J'utilise ton exemple dubois77,il me plait bien )
alors utilise StringReplace exemple
Edit1.Text := StringReplace('5 toto 6 papa',' ',',',[rfReplaceAll]);

ou séparer '5,toto,6,papa' alors utilise les TStringList
Un exemple tout bête avec un bouton et un memo (pas testé)
procedure SepEdit(S: string; List: TStrings);
var
    T : TStringList;
begin
    T := TStringList.Create; //Création TStringList
    try
        T.Delimiter := ','; //Pas utile par défaut c'est déjà ','
        T.DelimitedText := S; //Séparation du texte
        List.Clear; //Efface le contenu précédent
        List.AddStrings(T); //Mise en place du trie dans le TStrings ici Memo1.Lines
    finally
        T.Free; // Libération TStringList
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    SepEdit('5,toto,6,papa',Memo1.Lines);
end;

J'espère t'avoir aidé
@+yanb
Commenter la réponse de cs_yanb
Messages postés
16
Date d'inscription
samedi 19 juillet 2008
Dernière intervention
20 juin 2012
- 19 mai 2011 à 22:42
0
Merci
Merci à tous !

Je vais tester vos méthodes.
Je reviendrais vous donner les nouvelles
Commenter la réponse de dioufthier
Messages postés
16
Date d'inscription
samedi 19 juillet 2008
Dernière intervention
20 juin 2012
- 22 mai 2011 à 23:11
0
Merci
En fait, ce que je veux exactement, c'est ecrire une liste de valeurs dans un Edit, et les récuperer toutes .
Par exemple : 1,2,3,4,5.
Commenter la réponse de dioufthier
Messages postés
16
Date d'inscription
samedi 19 juillet 2008
Dernière intervention
20 juin 2012
- 23 mai 2011 à 12:48
0
Merci
Merci dubois77
Commenter la réponse de dioufthier

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.