Comment obtenir le fichier créer le plus récemment sur le disque dûr

oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004 - 12 mai 2004 à 18:48
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004 - 18 mai 2004 à 17:52
Bonjour

est ceque quelqu'un veut bien me montrer comment obtenir le fichier (d'une extension donnée) le plus récent enregistré sur le disque dûr???
et l'ouvrir ensuite avec createfile(.......);

help!help!help
merci
ahmed

32 réponses

hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
13 mai 2004 à 09:41
m'est avis qu'il faut que tu parcoures tous les fichiers du disques et que tu compares leurs attributs
voir FindFirstFile, FindNextFile et GetFileTime
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
13 mai 2004 à 11:07
suposons que j'ai une variable où le nom du fichier est stocké comment je peux faire passer le nom du fichier et son emplacement sur le disque dûr à la fonction cretafile()???
remarque:
j'ai essayé avec
char path[] = "D:\";
char theFileName[] = "DG5C1106.DCR";
strcat(path,theFileName) ;
printf("pathe:%s\n",path);
j'obtiens:
pathe:D:\DG5C1106.DCR!!! il est passé où l'autre antislash??et quand je passe le path à createfile(.....), elle aime pas et ça passe pas.Voilà

ahmed
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mai 2004 à 11:14
Trop de lacunes en C, faut remettre le nez dans les bouquins.

Les 2 antislash c'est juste pour ecrire une constante, '\' est un carac d'echappement, il n'y en a bien entendu qu'1 seul d'ecrit a la finale et c'est tres bien.

Concat sur path[] qui est declare en constante, tu t'etonnes que ne va pas !!! Tu ecrases les donnees qui suivent.

ciao...
BruNews, Admin CS, MVP Visual C++
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
13 mai 2004 à 11:40
merci
mais je suis un néophythe, dis moi ce que je dois faire exactement alors
merci

ahmed
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mai 2004 à 11:47
char path[264];
voila un buffer sur lequel on peut ecrire.
Il y a nombreux exemples de listage des fichiers sur disque dans mes sources et surement dans d'autres aussi.

ciao...
BruNews, Admin CS, MVP Visual C++
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
13 mai 2004 à 15:11
en fait j'ai fais ce que tu m'as dis mais ça marche pas toujours:
je t'explique quand je fais:

char path[264] = "D:\";
char theFileName [] = "DG5C1106.DCR";
strcat(path,theFileName) ;
*outHandle = CreateFile(path,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

ça marche !!!!!!

mais quand je fais:
*****************

char theFileName[255];
HANDLE *outHandle;
char path[264] = "D:\";
strcat(path,theFileName);
//thefilename contient une valeure:nomdufichier
*outHandle = CreateFile(path,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);

ça marche pas du tout!!!!!
help
help
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 mai 2004 à 15:16
c'est que theFileName ne contient pas de nom de fichier existant.

ciao...
BruNews, Admin CS, MVP Visual C++
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
13 mai 2004 à 15:54
non nono!
j'ai fait un contrôle avant d'appeler createfile() j'ai contrôler que le thefilename contient bien une valeur à l'aide de la fonction printf("toto:%s\n",theFileName);

et j'obtient bien un nom et j'ai vérifié sur le disque dûr et le fichier est bien créé!!!

ausecours!
ahmed
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
13 mai 2004 à 16:28
et donc, si c'est bien crée, quel est le problème ?
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
13 mai 2004 à 16:54
le probleme c'est qu'on je passe le path à cretaefile() ça marche pas!
ahmed
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
13 mai 2004 à 16:58
Je deviens peut-etre un boulet au fur et à mesure que l'heure passe, mais tu ne viens pas de dire que ca marchait ?

j'obtient bien un nom et j'ai vérifié sur le disque dûr et le fichier est bien créé!!!


ps: noublie pas de controler le retour de CreateFile(...), et en cas d'echec, de regarder GetLastError()
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
13 mai 2004 à 16:59
le contrôle que je fais avec printf(); je le fais avant createfile()!!!
et même si le thefilename n'est pas vide le createfile ne marche pas alors que dans le premier cas la haut ça marche!
moi je veux manipuler que thefilename (soncontenu chaquefois que le programme est lancé donc un fichier (une image) se crée et le nom de fichier est contenu dans thefilename!!
ahmed
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
13 mai 2004 à 17:08
le programme s'arrêtte exactement à createfile() j'ai fais des contrôles par affichage des "fafa" avant et aprés createfile() le premier contrôle est affiché alors que le deuxième ne s'affiche pas et le programme s'arrêtte.
moi je veux manipuler que thefilename (son contenu change chaquefois que le programme est lancé ; un fichier (une image) se crée et le nom de fichier est contenu dans thefilename!!
c'est assez clair comme ça?
voilà
ahmed
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
13 mai 2004 à 17:13
d'où mon ps :
fait :
if (CreateFile(...)==INVALID_HANDLE_VALUE)
{
LPVOID lpMsgBuf; 
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), 0, (LPTSTR) &lpMsgBuf, 0, NULL); 
MessageBox(NULL,(LPCTSTR)lpMsgBuf,"",MB_ICONSTOP); 
LocalFree( lpMsgBuf ); // Free the buffer. 
}

tu auras peut-etre une idée plus précise de pourquoi ca ne marche pas
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
14 mai 2004 à 11:17
oui bonjour hilairenicolas,
excuser moi de ne pas avoir la discussion hier en fait la fonction createfile ne retourne rien du tout; le programme s'arrête; il ne peut pas l'exécuter! et ça me fait le message suivant:

L’instruction à « 0x00401d8a » emploie l’adresse mémoire « 0x00000000 ». la mémoire ne peut être « writen »
voilà est ce que tu as une idée de ce que ça peut être?

AU SECOURS

ahmed
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2004 à 11:44
Pour sur, tu fais:
*outHandle = CreateFile(...
FAUT PAS DEREFERENCER outHandle avec '*'
outHandle = CreateFile(...
devrait aller mieux.

ciao...
BruNews, Admin CS, MVP Visual C++
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
14 mai 2004 à 16:37
je l'ai fait ça marche toujours pas.
je ne sais pas où il est le problème?

DIS moi comment faire en sorte qu'une variable non vide en l'occrence thefilename garde toujours sa valeur quand utilsée à l'intérieur d'une procédure ( une fonction que main() appelle )
une métohe qui me permetteras d'utiliser la valeur de thefilename à l'intériuer d'une autre fonction que main() appelle?
AU SECOURS§
****************************
ahmed
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 mai 2004 à 16:45
Declare la en globale en haut du fichier cpp.

ciao...
BruNews, Admin CS, MVP Visual C++
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
14 mai 2004 à 18:15
ça marche tjrs pas! àpropos du code que tu m'as envoyé pour savoir pourquoi createfile() ne marche pas
ilme dis que le fichier est utiliser par un autre processus
je crois qu'il faut inserrer une fonction d'attente
ahmed
0
oudkaramla Messages postés 107 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 5 juillet 2004
14 mai 2004 à 18:43
en fait ça marche le createfile j'ai trouver la solution c'est les paramètres de createfile() il falait faire GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE,

maintenant j'ai un autre problème c'est comment transformer renomer le fichier d'extension .dcr sous le même nom mais d'extension .tif
merci
ahmed
0
Rejoignez-nous