Menu

Chercher un fichier (WinCE) [Résolu]

Messages postés
53
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
29 mai 2019
-
Bonjour,

J'ai un fichier qui change le nom à chaque mise à jour , par exemple:
PARAMZONE_05.csv après PARAMZONE_06.csv
Le chemin est : /HP/API/ PARAMZONE_06.csv
Je chercher comment sur windows peux-je chercher un fichier qui commence par PARAMZONE et récupérer le nom complet du fichier dans mon cas c'est "PARAMZONE_06.csv" car je devrais le parcourir.

Avez-vous une idée svp?

Merci

Configuration: Windows / Chrome 74.0.3729.157
Afficher la suite 

1 réponse

Meilleure réponse
Messages postés
5133
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
19 juin 2019
778
1
Merci
Salut emmy_2019,

Tu peux utiliser l'API Windows et leur fonction
FindFirstFile()
:

https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-findfirstfilea


Dal

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 45254 internautes nous ont dit merci ce mois-ci

emmy_2019
Messages postés
53
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
29 mai 2019
> [Dal]
Messages postés
5133
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
19 juin 2019
-
Voilà le code de ma fonction principale qui plante dans fopen:

int Count_Zone() {
 FILE *fp;
 char temp[512];
 int count;
 //char * File_Name;
 //File_Name =
  wchar_t * pattern =L"/HD/SPEC/ticketingmodule/Data/PARAMZONE*";

 WIN32_FIND_DATAW fileinfo;
 HANDLE hFind;
wchar_t * file_name =NULL;
 hFind = FindFirstFileW(pattern, &fileinfo);
 if (hFind == INVALID_HANDLE_VALUE) {
  /* obtenir le code d'erreur */
  DWORD error_id = GetLastError();
  printf("FindFirstFile failed: with error code %lu\n", error_id);
  return 0;
 }

  wprintf(L"file_name=%s\n", fileinfo.cFileName);
  file_name = _wcsdup(fileinfo.cFileName); 
 count = 0;
 //Visual Studio users
 if((fopen_s(&fp, file_name, "r")) != NULL) {
  return -1;
 }

 while(fgets(temp, 512, fp) != NULL)
 {
  if((strstr(temp, "ZN")) != NULL)
  {
   if(strstr(temp,"F:ZN") == NULL)
   {
    count++;
   }

  }
 }
 //Close the file if still open.
 if(fp) {
  fclose(fp);
 }
 FindClose(hFind);
 return(count);
}

j'ai fait un
_wfopen_s(&fp, file_name, L"r")
mais ça plantait encore
emmy_2019
Messages postés
53
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
29 mai 2019
-
Merci Dal,

Moi j'en ai besoin du nom de fichier pour l'ouvrir avec fopen
fopen_s(&fp, File_Name, "r"))

Est ce que ce serait possible que le File_Name reste de type wide ou il faut le convertir?
[Dal]
Messages postés
5133
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
19 juin 2019
778 -
Ton message d'origine concernait la question "Chercher un fichier (WinCE)".

Est-ce que les modifications que je t'ai proposées dans mon message https://www.commentcamarche.net/forum/affich-36035667-chercher-un-fichier-wince#18 te permettent de trouver fichier qui commence par PARAMZONE et en récupérer le chemin complet ?

Si oui, ce problème est résolu, et tu poserais maintenant une autre question.

Peux-tu clarifier, stp que tu parviens bien à obtenir le chemin du fichier recherché ?
[Dal]
Messages postés
5133
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
19 juin 2019
778 -
Si ton nom de fichier est de type
wchar_t *
, tu dois, bien sûr utiliser une fonction "wide".

Si la fonction d'ouverture échoue, tu dois pouvoir récupérer le code d'erreur et voir pourquoi la fonction échoue en lisant la documentation de Microsoft sur la signification des codes.

Tu te contentes de dire que le code "plante" sans autres précisions, ce qui n'aide pas à t'aider :-/
emmy_2019
Messages postés
53
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
29 mai 2019
-
Bonjour Dal,

J'ai modifié le code et j'ai réussi à voir ce que je veux.
Ce problème est résolu
Commenter la réponse de [Dal]