Chercher un fichier (WinCE) [Résolu/Fermé]

Signaler
Messages postés
59
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
16 septembre 2019
-
Messages postés
59
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
16 septembre 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

1 réponse

Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
Salut emmy_2019,

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

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


Dal
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57002 internautes nous ont dit merci ce mois-ci

Messages postés
59
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
16 septembre 2019
>
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020

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
Messages postés
59
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
16 septembre 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?
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
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://forums.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é ?
Messages postés
5394
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
31 juillet 2020
891
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 :-/
Messages postés
59
Date d'inscription
mardi 23 avril 2019
Statut
Membre
Dernière intervention
16 septembre 2019

Bonjour Dal,

J'ai modifié le code et j'ai réussi à voir ce que je veux.
Ce problème est résolu