Interdire Chiffres ou certains caractère dans listbox [Résolu]

Messages postés
7
Date d'inscription
dimanche 22 avril 2007
Dernière intervention
25 novembre 2007
- - Dernière réponse : f0xi
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 25 avril 2007 à 16:54
Bonjour à tous,


Comment éviter la prise en compte des chiffres (ex: 45678) ou certains caractères ( ex: @) dans un listbox ?


Merci de votre aide
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
3
Merci
methode plus rapide que replacestring, peu même supporter de trés gros fichiers  :

function ExcludeChars(const S : string; const CS : set of char) : string;
var pR : PChar;
    L,I,N: integer;
begin
  L := Length(S);
  I := 0;
  for N := 1 to L do
    if S[N] in CS then I := I + 1;
  I := L - I;
  if I = 0 then
  begin
    result := '';
    exit;
  end else
  begin
    SetLength(Result, I);
    pR := PChar(Result);
    for N := 1 to L do
      if not (S[N] in CS) then
      begin
        pR[0] := S[N];
        inc(pR);
      end;
  end;
end;

utilisation :

ListBox1.Text := ExcludeChars( TSL.Text, ['0'..'9','-','+','=']);

Merci f0xi 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de f0xi
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
3
Merci
et contraitement avec ton exemple :

with ListBox1.Items do
try
  BeginUpdate;
  Clear;
  Text := ExcludeChars(StringList.Text, ['4'..'8','@']);
finally
  EndUpdate;
end;
   

Merci f0xi 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de f0xi
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
3
Merci
correction :





function ExcludeChars(const S : string; const CS : TSysCharSet) : string;
var pR : PChar;
    L,I,N: integer;
begin
  L := Length(S);
  I := 0;
  for N := 1 to L do
    if S[N] in CS then I := I + 1;
  I := L - I;
  if I = 0 then
  begin
    result := '';
    exit;
  end else
  begin
    SetLength(Result, I);
    pR := PChar(Result);
    for N := 1 to L do
      if not (S[N] in CS) then
      begin
        pR[0] := S[N];
        inc(pR);
      end;
  end;
end;







Merci f0xi 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de f0xi
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
0
Merci
salut,

il y a une très grandes quantité de réponse à cette question sur le forum et dans les sources d'exemple. fait des recherche pour les Tedit (ou edit), les même techniques sont applicable.

(a tout hasare, faut chercher du côté de OnKeyDown & friends.)

si tu as un problème lors de l'implementation de ce que tu as trouvé, revient avec une question. on t'aidera.

bonne recherche,

Loda
Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Commenter la réponse de cs_Loda
Messages postés
7
Date d'inscription
dimanche 22 avril 2007
Dernière intervention
25 novembre 2007
0
Merci
Merci pour ta réponse.

En fait je ne souhaite pas utiliser Onkeydown.

Je veux faire un transfert  entre un Tstringlist et un listbox.

Les chiffres ou certains caractères se trouvant dans Tstringlist n'étant pas transférés dans le listbox.
Commenter la réponse de cs_petitpouce
Messages postés
900
Date d'inscription
vendredi 3 novembre 2000
Dernière intervention
30 juillet 2009
0
Merci
alors, ça tu dois le faire à la main. y a pas de solution magique. (je pensais que tu parlais de la saisie. dsl)

il te faut faire un truc genre
for
  str :=  replacestring ( ListSource[i], CharNonVoulu, '') ;
  
str := replacestring ( str, CharNonVoulu2, '') ;

  listDest.Add(str);

(dsl, c'est brouillon, mais je dois y aller.)

A+
Loda

ps: meilleur avec un tableau Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Commenter la réponse de cs_Loda
Messages postés
7
Date d'inscription
dimanche 22 avril 2007
Dernière intervention
25 novembre 2007
0
Merci
Re,

Merci F0xi pour ta proposition.
Je la teste et je te fais un retour.

Merci encore
Commenter la réponse de cs_petitpouce
Messages postés
7
Date d'inscription
dimanche 22 avril 2007
Dernière intervention
25 novembre 2007
0
Merci
Re,

Ta fonction est fonctionnelle dans mon projet.
Combien de temps as-tu mis pour l'écrire ?
Merci encore
Commenter la réponse de cs_petitpouce
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
content de voir qu'elle fonctionne bien chez toi,
j'ai du mettre a peu prés 2 minutes pour y reflechir, 15 pour faire l'ebauche et te la poster, 60 de plus pour l'ameliorer, la corriger, la mettre sur codyx et te poster la correction.

Commenter la réponse de f0xi

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.