Conversion en String un ensemble Set [Résolu]

Signaler
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008
-
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
-
salut,
   j'ai un souci sur une parti de ma prog, j'ai effectué un test de caractère non autorisé (qui fonctionne très bien !) mais je n'arrive pas à faire apparaitre la liste dans un showmessage
voici mon extrait de code concerné :

Const
  TabInterdit =  [':','/','\','?','>','<','*','"','|'];
var
   j : Integer;
begin
   for j := 1 to Length(Edit1.Text) do
        if (Edit1.Text[j] in TabInterdit) then
        Showmessage('Le nom de l''image '+TabEdit[i].Text+
                    ' ne peut contenir les caractères spéciaux suivants :'+#13
                    //+ là je veux lister les caractères TabInterdit
                    );
end;

11 réponses

Messages postés
3825
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 février 2021
39
Salut,

Voici un exemple simple pour afficher le contenu du Set
procedure TForm1.Button1Click(Sender: TObject);
Const
  TabInterdit  =   [':','/','\','?','>','<','*','"','|'];
var
   I      : Integer;
   StrSet : String;
begin
  For I : = 0 to 255 do
   If Chr(I) in TabInterdit Then  StrSet := StrSet + Format('''%s'' ', [Chr(I)]);
        ShowMessage('Le nom de l''image ne peut contenir les caractères spéciaux suivants :' + StrSet);
end ;

Voilà à toi de l'adapter a tes besoins
 
@+
Cirec

<hr size ="2" />
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
tite correction  :

procedure TForm1.Button1Click(Sender: TObject);
Const
  TabInterdit = [':','/','\','?','>','<','*','"','|'];
var
   I        : Integer;
   S,StrSet : String;
begin
  S      := Edit1.Text;
  StrSet := '';
  for I := 1 to Length(S) do
    If S[I] in TabInterdit Then
      StrSet := StrSet + S[I];
  if Length(StrSet) <> 0 then
    ShowMessage('Le nom de l''image ne peut contenir les caractères spéciaux suivants :' + StrSet);
end;

<hr size="2" width="100%" />Croc (click me)
Messages postés
165
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
10 novembre 2008

Salut,

Si le code est identique à ce que tu a posté c'est normal que ca marche pas car dans ton ShowMessage tu a mis TabEdit[i].Text alors que tu a beaucoup plus simple, vu que le caractère qui est interdit est celui testé dans l'Edit1 tu peux faire :

ShowMessage('Le nom de l''image ne peut contenir la caractère suivant : '+Edit1.Text[i])

Ensuite tu met ta fonction dans le Edit1KeyPress et voila le tour est joué.

Bonne Prog
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

pour afficher juste un message d'erreur pour le char tapé, fait comme moldov t'as dit. C'est super simple.
(detail: t'as un problem entre i vs j)

pour afficher TOUT le set, je ne connais aucun moyen simple. Si j'étais a ta place, je ferrais juste une const string (comme ça t'as les virgule et tout).

A+

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
379
Date d'inscription
mardi 6 décembre 2005
Statut
Membre
Dernière intervention
8 octobre 2008

salut lova, 
   merci pour ta remarque mais pour le KeyPress, cela neme donnait pas le résultat désiré et aurait été lourd à la longue, je pense car si à chaque fois que l'on frappe un touche interdite un message apparait voilà quoi !!

salut moldov,
   comme tu vois il y a un moyen simple proposé par cirec auquel on aurait pu éventuellement penser a cela mais il en est ainsi !
merci tout de même d'avoir répondu à mon message !!

salut cirec, 
   c'est super, je te  remercie
C'est exactement ça qui me fallait, tu me sauves !! merci encore !
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
re,

je suis bien d'accord, les messagebox qui te coupe la saisie: c'est pénible....

pour gérer des erreurs de saisie, je recommande (à  mon humble avis):
1. une correction le plus automatique possible
2. une message d'erreur clair (pour comprendre la correction auto)
3. des message d'erreur non "interrompant".

le point trois peut se réaliser de plusieurs manières:

3.a une console d'erreur (ie: un memo à alBottom)
3.b l'affiche d'un label en rouge en dessous de la zone de saisie.
3.c une  fenêtre "stayOnTop" de petit taille qui se position près de la zone de saisie. tu la fait apparaître lors de l'erreur et disparaître lorsque la saisie est corrigée. Un genre de bull d'info. avec la transparence et une jolie image de fond, t'arrive à faire qqch de très jolie. En plus, tu peux ajouter de l'interactivité (bouton d'aide, liens vers site web, ...)

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
Salut,

Moi, je ferais simplement:


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 If Key in [':','/','\','?','>','<','*','"','|'] then Key := #0;
end;

Je pense qu'il est inutile de prévenir l'utilisateur de sa petite distraction... 
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
Quoique...

Si c'est un prog pour débutant de Papouasie, il vaut peut-être mieux lui indiquer l'erreur...
Ce sera plus didactique. 
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
...Enfin, j'ai rien contre les Papous.
Mais on n'en voit pas beaucoup traîner sur CS...

On se demande bien ce qu'ils peuvent bien foutre de leur journée...
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
Chez les papous y'a des papous papa et des papous pas papa. Mais
chez les papous il y a aussi des poux, donc chez les papous y'a des papous
papa à poux, des papous papa pas à poux, des papous pas papa
à poux et des papous pas papa pas à poux. Chez les poux il
y a des poux papa et des poux pas papa. Alors chez les papous, y'a-til
des papous papa à poux papa, des papous papa à poux pas papa,
des papous papa pas à poux papa, des papous papa pas à poux
pas papa, des papous pas papa à poux papa, des papous pas papa à
poux pas papa, des papous pas papa pas à poux papa et des papous
pas papa pas à poux pas papa






<hr size="2" width="100%" />
Croc (click me)
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
16
... Je confirme.

Par contre, je précise que ça marche pas pour la papoute.
"La papoute à pouxe maman" provoquant un msg d'erreur.

Et je rappelle à  gabs77 de ne pas oublier la touche "réponse acceptée"...