1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| //PERMET DE METTRE TOUS LES NOMS D'ILOTS COMMENCANT PAR "ILOT" PRESENT DANS LE FICHIER .CSV DANS UN TABLEAU "listeilot"
void CChoixIlot::ListeIlots()
{
FILE * fichierCsv; // Nom du fichier qu'on va utiliser
char * cToken; // Buffer du contenu des valeurs d'une ligne
char * cToken2; // Buffer du contenu des valeurs d'une ligne
char cBuffligne[1500] = ""; // Buffer du contenu de la ligne du fichier
int iCompteur = 0; // Compte le nombre de fois où on boucle
int colonneIlot;
bool d=TRUE; // Numéros des colonnes qui nous intéressent
// ON RECUPERE LE NUMERO DES COLONNES QUI NOUS INTERESSENT
if(( fichierCsv = fopen (cheminFichier1,"r")) != NULL)
//Si pas de problème lors de l'ouverture du fichier
{
//if (fgets(cBuffligne,sizeof(cBuffligne),fichierCsv) != NULL)
while ( (fgets(cBuffligne,sizeof(cBuffligne),fichierCsv) != NULL) && d==TRUE )//pour toute les lignes du fichier ou jusqu'a ce que "d" soit faux
{
cToken = strtok( cBuffligne, "|\n" ); //Le délimiteur des valeurs est un pipe
while( cToken != "LAVAL" && d==TRUE )
{
iCompteur ++; // lorsqu'on boucle, cela veut dire qu'on passe à la colonne suivante...
if((CString) cToken == "Ilôt Technicien")
{ // si entre deux virgules on reconnait ce String
colonneIlot = iCompteur;// alors on recupère ce qui correspond à son numéro de colonne
cToken=NULL;
}
if ((CString) cToken == "Date Effective")// si on rencontre la dernière colonne "Date Effective"
{
d=FALSE; // on met "d" a FALSE pour sortir de la boucle
}
cToken = strtok( NULL, "|\n" ); //on passe au Token suivant
}iCompteur=0;
}
}fclose(fichierCsv);
if(( fichierCsv = fopen (cheminFichier1,"r")) != NULL)
{ CString temp;
int l=0; //Si pas de problème lors de l'ouverture du fichier
while (fgets(cBuffligne,sizeof(cBuffligne),fichierCsv) != NULL) //Pour chaque ligne du fichier
{
iCompteur=0;
cToken2 = strtok( cBuffligne, "|" ); //Le délimiteur des valeurs est un point virgule
while ( cToken2 != NULL )
{
iCompteur ++; // compteur "des pipes", à chaque boucle on est passé à la colonne suivante
if ( iCompteur == colonneIlot ) // si on est à la colonne "ilot technicien"
{
int result=strcmp(cToken2," "); // on compare la valeur de la cellule a "vide"
if(result!=0) //si la colonne "ilot technicien" a bien été rempli
{
if ((CString)cToken2!="Ilôt Technicien") // si la chaine de caractère n'est pas le titre de la colonne
{
temp=(CString)cToken2; // "temp" prend pour valeur le nom de l'ilot
int c = temp.GetLength();// "c" prend pour valeur sa longueur
temp.Delete(4,c-4); // on supprime tout le nom de l'ilot à partir du 4ème caractère
int res1=strcmp(temp,"ILOT"); // pour pouvoir le comparer a la chaine "ILOT"
if (res1==0) // si le nom présent dans la colonne commence par "ILOT"
{
listeilot[l]=cToken2; // on ajoute le nom de l'ilot au tableau "listeilot"
l++;//on incrémente le pointeur qui indique la ligne du tableau
}//else ErrIlot(cToken2); //sinon appel de la fonction ErrIlot()
}
}
}
cToken2 = strtok( NULL, "|" ); // on récupère l'autre Token
}
}
}
fclose (fichierCsv); // on ferme le fichier
} |
Partager