emmanuelgo
Messages postés58Date d'inscriptionvendredi 24 décembre 2004StatutMembreDernière intervention13 avril 2005
-
2 févr. 2005 à 03:36
emmanuelgo
Messages postés58Date d'inscriptionvendredi 24 décembre 2004StatutMembreDernière intervention13 avril 2005
-
4 févr. 2005 à 14:44
Salut à tous...
voici mon problème, c'est surement très bête, mais j'ai le nez dessus depuis pas mal de temps et je ne vois pas le problème..j'ai fait une recherche mais rien..
voilà:
ListCount := LFilesToDel.Items.Count-1;
.....
for i := 0 To ListCount do begin;
if LFilesToDel.Items[i].SubItems.Text='Fichier' then....
else...
..
où LFilesToDel est un TListView à deux colonnes...
ce test est toujours faux, et execute donc toujours la procédure aprés le else et jamais celle aprés le then..alors que evidemment j'ai bien le subitem = 'Fichier' (j'ai même re-vérifier en l'affichant à chaque fois dans un label, au cas où il y ait des modification dessus).
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 2 févr. 2005 à 08:16
Salut,
1 - Si le point-virgule que j'ai mis en rouge existe dans ton
programme, il n'y a pas de boucle ! En sortant, i est égal à
ListCount+1, c'est une ligne qui n'existe pas, et normalement il
devrait t'envoyer aux prunes.
for i := 0 to ListCount do begin;
2 -
SubItems.Text est terminé par les caractères #$0D#$0A (tu peux vérifier
dans les points de suivi) et ta comparaison sera toujours fausse.
Utilise plutôt SubItem[0] (0 : deuxième colonne, 1 : troisième colonne,
etc ....). Ces chaînes ne comprennent pas les caractères CR-LF.
if LFilesToDel.Items[i].SubItems.[0]='Fichier' then...
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 4 févr. 2005 à 07:52
Salut
Excuse-moi pour le premier point, il n'y a pas de pb grace au begin, mais si tu fais
for i := 0 To ListCount do ;
if LFilesToDel.Items[i].SubItems.Text='Fichier' then....
le point-virgule après le
for marque la fin d'une instruction (nulle), et comme il n'y a pas de
begin, c'est la seule à être exécutée par la boucle. Ci dessus, la
boucle ne sert à rein d'autre qu'à mettre i à la valeur ListCount+1.
T'as bien compris le deuxième point. Les caractères #$0D (ou #13) et
#$0A (#10) font partie des caractères de contrôle ASCII (non
imprmables), ils permettent de dépacer le chariot des télétypes et
imprimantes texte.
#$0A #10 LF =Line Feed = Descendre d'une ligne
#$0D #13 CR = Carriage Return = Retour chariot à gauche de la page.
emmanuelgo
Messages postés58Date d'inscriptionvendredi 24 décembre 2004StatutMembreDernière intervention13 avril 2005 2 févr. 2005 à 06:26
merci de ta réponse rapide (tu ne dors pas??)
LFilesToDel.Items.Count-1 est à 0 aprés la premiere affectation à la liste, à 1 aprés la deuxieme affectation etc...
la boucle for commence donc à 0 jusque LFilesToDel.Items.Count-1 pas de problèmes avec ça, d'autant plus que la procédure du else est executé...
le problème ne vient donc pas de la boucle mais bien du test...
quand j'enlève ce test, la procédure du then est bien executée aussi...
merci tout de même....
Vous n’avez pas trouvé la réponse que vous recherchez ?
emmanuelgo
Messages postés58Date d'inscriptionvendredi 24 décembre 2004StatutMembreDernière intervention13 avril 2005 3 févr. 2005 à 00:45
merci beaucoup ça marche...
il y avait bien un ' ; ' aprés le for, mais ce n'est pas ça qui posait problème, mais bien le deuxieme point (j'ai fait la modif 2 en enlevant puis en remettant le ' ; ', ça marche dans les deux cas)
En fait je n'ai pas bien compris ton explication concernant le 1er point (l'histoire du ' ; ' aprés le for).... si ça te dérange pas de m'expliquer de façon plus détaillé, tu es le bienvenu !!!
Par contre, si j'ai bien compris :
si j'ai le mot 'fichier' dans le subitem, alors subitem.text me donnera : 'fichier#$0D#$0A'...'est-ce bien ça? Est-ce cela que tu appelles 'caractères CR-LF'? à quoi correspondent ces caractères?
si tu veux bien appronfondir tes explications, ce serait cool...sinon, merci quand même, ca me décoince le code !