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

cs_petitpouce 7 Messages postés dimanche 22 avril 2007Date d'inscription 25 novembre 2007 Dernière intervention - 24 avril 2007 à 13:10 - Dernière réponse : f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention
- 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
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 24 avril 2007 à 17:03
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de f0xi
Meilleure réponse
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 24 avril 2007 à 17:08
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de f0xi
Meilleure réponse
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 24 avril 2007 à 18:09
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de f0xi
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 24 avril 2007 à 13:23
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
cs_petitpouce 7 Messages postés dimanche 22 avril 2007Date d'inscription 25 novembre 2007 Dernière intervention - 24 avril 2007 à 13:56
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
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 24 avril 2007 à 14:32
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
cs_petitpouce 7 Messages postés dimanche 22 avril 2007Date d'inscription 25 novembre 2007 Dernière intervention - 24 avril 2007 à 18:25
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
cs_petitpouce 7 Messages postés dimanche 22 avril 2007Date d'inscription 25 novembre 2007 Dernière intervention - 24 avril 2007 à 20:06
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
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 25 avril 2007 à 16:54
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.