Bonjour,

Je ne voulais pas vous ennuyer avec mes problèmes métaphysiques mais quand je tombe sur ce que je vais vous conter ci-après, 1), je tombe par terre et 2), je me sens obligé de partager.

Donc, pour raccourcir des lignes de code un peu longues et pas très lisibles ainsi que pour économiser des calculs, je décide de remplacer length(TestDir)+1 par lenTestDir avec lenTestDir := length(TestDir)+1;, et TestDir n'est qu'une bête string utilisée comme constante.
Je pars de ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
for i := 0 to mmoTemp.Lines.Count-1 do 
  mmoFoldersForFonts.Lines.Add(copy(mmoTemp.Lines[i],length(TestDir)+1,length(mmoTemp.Lines[i])-length(TestDir)+1));
et ça donne ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
for i := 0 to mmoTemp.Lines.Count-1 do 
  mmoFoldersForFonts.Lines.Add(copy(mmoTemp.Lines[i],lenTestDir,length(mmoTemp.Lines[i])-lenTestDir));
Et que croyez-vous qu'il arrivât ?
J'ai un dossier nommé "vide" : la première ligne de code affiche "vide", la seconde "vid" et pareil pour tous les autres dossiers, il manque la dernière lettre !

Je mets ci-après juste la partie incriminée des bouts de code en mode comparaison graphique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
...copy( mmoTemp.Lines[i], length(TestDir)+1, length(mmoTemp.Lines[i])-length(TestDir)+1 ); // ok
...copy( mmoTemp.Lines[i], lenTestDir       , length(mmoTemp.Lines[i])-lenTestDir        ); // kc
//Et pour que je retrouve des résultats corrects, il me faut bidouiller, avec ce +1 rajouté dessous
...copy( mmoTemp.Lines[i], lenTestDir       , length(mmoTemp.Lines[i])-lenTestDir+1)     ); // ok
Alors, elle est où, la blague ? (pourquoi la vie est-elle si compliquée, et l'informatique encore plus ?)

Au plaisir de vous lire,