Bonjour,
j'analyse un programme écrit par un ancien développeur de ma boite. On a des problèmes sur le traitement de fichiers (c'est la fonction principale du programme).

Le problème vient d'une condition que je ne comprends pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
//Le programme liste l'ensemble des fichiers dans le répertoire de travail
string[] strFichier = Directory.GetFiles(strRepTravail);
int iFichier = 0;
//Pour chacun des fichiers que le programme a trouvé dans le répertoire de travail
while(iFichier < strFichier.Length)
{
	TextReader filFichier;
	Info = new FileInfo(strFichier[iFichier]);
	int iDteTemp = DateTime.Compare(dteDernierFichier ,Info.LastWriteTime);
	// test si le fichier est à traiter
	if(iDteTemp < 0)
	{ 
	  //TODO...
	}

Le code est très simple, on prend tous les fichiers d'un dossier et fichier par fichier, on compare la date de modification avec une date (dteDernierFichier).
Si dteDernierFichier est antérieure à la date de modification du fichier courant (Info.LastWriteTime), alors la fonction retourne un résultat inférieur à zéro, dans le cas inverse, la fonction retourne une valeur supérieure à 0. Si les deux dates sont égales, on retourne 0.
Nous avons fait des tests sur un ensemble de 5 fichiers pour lesquelles les dates de modification étaient toutes les même, à savoir le 08/10/2009 à 16:42:06.
Pour 4 de ces 5 fichiers, la fonction Compare nous a retourné -1 et pour le 5ème, elle nous a retourné 0.
Comment se fait-il qu'elle ne nous ait pas retourné 0 à chaque fois puisque les dates de modification étaient toutes les mêmes ?
Est-il possible que la fonction Compare se serve des millisecondes ?

Merci d'avance