Simplifier conditions

Résolu
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 - 6 juin 2010 à 20:36
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 - 7 juin 2010 à 18:48
Bonsoir une petite question facile, comment "simplifier" ces conditions :

for i:= CheckListBox1.Count -1 downto 0 do
 if CheckListBox1.Checked[i] then
 begin
  if CheckListBox1.Items[i]=Chemin+'0123' then
  RemoveDir(CheckListBox1.Items[i])
 else
  if CheckListBox1.Items[i]=Chemin+'blabla' then
   RemoveDir(CheckListBox1.Items[i])
  else
   if CheckListBox1.Items[i]=Chemin+'abc' then
    RemoveDir(CheckListBox1.Items[i])
   else
[...]


avec quelque chose du genre :
[b] if CheckListBox1.Items[i]=Chemin+'0123' or Chemin+'blabla' or Chemin+'abc' then
RemoveDir(CheckListBox1.Items[i])
/b



Merci de votre aide !

6 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
6 juin 2010 à 23:04
Salut,

Tu as plusieurs solutions

if CheckListBox1.Items[i]=Chemin+'0123' or CheckListBox1.Items[i]=Chemin+'blabla' or CheckListBox1.Items[i]=Chemin+'abc' then

ou 

case CheckListBox1.Items[i] of 
  Chemin+'0123', Chemin+'blabla',Chemin+'abc' :
   (RemoveDir(CheckListBox1.Items[i]) );
  end;

ou avec une regexp
  a trouver un truc tu genre (0123|blabla|abc)


Désolé je ne connais pas le pascal parcoeur et j'en ai pas de dispo pour valider mais ca peut donner des idées au niveau algo
3
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
7 juin 2010 à 00:28
salut
pour la condition:
if CheckListBox1.Items[i]=Chemin+'0123' or CheckListBox1.Items[i]=Chemin+'blabla' or CheckListBox1.Items[i]=Chemin+'abc' then
il faut mettre des parenthèses:
if( CheckListBox1.Items[i]=Chemin+'0123') or (CheckListBox1.Items[i]=Chemin+'blabla') or (CheckListBox1.Items[i]=Chemin+'abc') then

pour le case l'aide donne
L'instruction case propose une alternative plus lisible à l'utilisation de conditions if très imbriquées. Une instruction case a la forme

case expressionSelection of
listeCas1: instruction1;
...
listeCasn: instructionn;
end

où expressionSelection est une expression de type scalaire (les types chaîne sont interdits) et chaque listeCas est l'un des éléments suivants :

comme les chaines sont interdites seul la premiere solution est envisageable
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
7 juin 2010 à 00:32
Merci pour ton complement

Et pour les regexp delephi les accepte??
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
7 juin 2010 à 00:41
Merci à tous les 2 !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
7 juin 2010 à 14:30
pour le regexp il est accepté en .NET mais pas en Win32 (jusqu'à DELPHI 2005 au moins pour les suivants ...peut-être) et comme je ne travaille pas en .NET je n'ai pas trop d'explications sur cette méthode
0
cs_JackNUMBER Messages postés 233 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 26 juin 2011 5
7 juin 2010 à 18:48
Vu la faible complexité de la requête les 2 méthodes proposées au-dessus suffisent amplement.
Mais c'est bon à savoir pour le .NET
0
Rejoignez-nous