DeAtHCrAsH
Messages postés2670Date d'inscriptionvendredi 25 janvier 2002StatutMembreDernière intervention 6 février 2013 29 déc. 2005 à 09:44
Marche très très bien sauf que sur certains dossier la taille est différente de celle affiché par les propriétés de ce meme dossier.
Peut etre est-ce due aux fichiers et dossiers cachés ???
NitRic
Messages postés402Date d'inscriptionmardi 1 mai 2001StatutMembreDernière intervention15 août 2011 4 déc. 2004 à 12:53
#if defined(_MSC_VER) && _MSC_VER >= 900
typedef signed __int64 _int64_t;
typedef unsigned __int64 _uint64_t;
#else
typedef signed long long _int64_t;
typedef unsigned long long _uint64_t;
#endif
typedef union {
struct {
unsigned long lo;
long hi;
};
_int64_t v;
}largeint;
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 3 déc. 2004 à 17:53
J'ai essayé en choisissant C:
Ca a pas l'air de trop avancer: le disque dur n'est pas utilisé et l'UC est à 0%
hilairenicolas
Messages postés398Date d'inscriptionjeudi 30 octobre 2003StatutMembreDernière intervention15 juin 20072 3 déc. 2004 à 15:10
moi, le truc que je trouve dommage, c'est au niveau de la conception, qui empeche la réutilisabilité complète.
Concrétement, tu peux pas prendre un .h et un .cpp pour le mettre dans ton prog et faire
#include "xxx.h"
__int64 taille = GetDirSize("...")
mais comme l'optique est didactique et que le but n'est pas de faire une bibliothèque standard réutilisable, ca n'est pas génant. Je suis conscient aussi du fait que de mettre la variable dwSize en globale plutot qu'en retour de fonction (comme on pourrait l'attendre) augmente les performances, nottament pour la pile et la récursivité
Mais après, chacun est à meme d'utiliser ca (ou non) pour ses propres besoins.
Bon travail
a+
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 1 déc. 2004 à 18:52
Si tu re-regardes le code tu n'as pas de GetFileSize comme tu le dis. Et puis maintenant la taille est dans un 64 bits alors fichiers trop gros plus de problème.
Pourquoi ré-inventer la roue quand celle-ci tourne bien ? Et puis tu oublies quand même la fonction qui calcul la taille, elle ne s'est pas écrite toute seule.
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 1 déc. 2004 à 18:29
LOL, jsuis d'accord ac toi si c'est tjs la même chose! Mais bon,, désolé, mais person, je pars du principe que les sources qu'on peut trouver sont des modèles certes mais elle ne constitue en rien notre propre code! Faut, je pense, qd mme utiliser sa propre tête et créer le sien, nan ? Apres, que tu réitéres ton propre code, ça c'est bon!
Et pour repondre à ta "pensée", j'ai autant de respect pour Arnotic qu'il n'en a pour moi :-) ...le respect est un phénomène qui est toujours dans les 2sens.....non ? :-))
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 1 déc. 2004 à 18:24
oula Gendal67, depuis kan n'a ton pas le droit de reprendre des fonctions d'autres personnes ? Perso, jutilise bnstrcpy, tt le temps, c'est pas une fonction bien compliké a coder, mais si on peut s'eviter cette peine, pkoi ne pas le faire ? Et les fonctions ke tu as cité comme 'pompé' sont des fonctions répétitives ke personne ne veut recoder car c tt le temps la mm chose, alors renseigne toi avant de critiquer...Pour ke tu comprennes, c comme si tu me reprochais de pomper le WinMain de Brunews, C TT LE TEMPS LA MM CHOSE ! Alors pkoi se faire chier ?
Je pense ke tu devrais avoir quand mm plus de respect pour Arnotic...
Gendal67
Messages postés627Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention24 juillet 20112 1 déc. 2004 à 18:13
Salut,
Chez moi, ça semble marcher, il me retourne une valeur 1fois sur 2, si on prend bien soin à ne pas lui donner qqch de trop gros :| ....sinan, ben, après regard sur ta source, j'ai comme je le pensé, rien vu de bien nouveau : un pathfinder de dossier, et un GetFileSize pr chaq fichier lu...mouais, c'est trop recherché, tu as du "te fouler un neuronne" pour trouver ça! Je tiens à dire à tout ceux qui liront son code, que si ils l'aimen sachez que au moins la moitié du code provient de bruNews et à été copié tel quel, genre :
char* bnstrcpy(char *dst, char *src); // le strcpy de bruNews....
sinan, il ya également la fonction BOOL DirExists(const char* pszFile), qui a été copié TELLE QUELLE de chez bruNews, source dispo ici (si vous voulez vérifier) :
http://www.cppfrance.com/code.aspx?ID=17138
idem, pr la fct int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM dwData);
En clair, la source a été pompée telle quelle sur +de 80%, la seule chose qu'il a crée, c'est la dialoguebox, et sachant qu'il utilise Visual C++, il a l'outil de création rapide de dialoguebox, dc la, comme vous voyez bien, arnotic a "fait aucun effort", il s'est trop trop "fouler un neuronne"...et j'en passe pour les citations (hein arnotic ?) ... dc voila, c'est vraiment prendre les programmeurs de codes source pr du bétail à qui on réitére le même code.... ! :| surtout qd on fait 10fois pire, on arrete de critiquer les autres! bye M.Admin !
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 1 déc. 2004 à 17:41
Oki niquel. Merci pour ton retour AlexMan
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 1 déc. 2004 à 17:38
Marche parfait et est bocou plus rapide que tout a l'heure.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 1 déc. 2004 à 17:32
case IDOK:
dwsize = 0; // avant toute chose
.....
cs_Arnotic
Messages postés933Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 9 janvier 2012 1 déc. 2004 à 17:21
Tu peux retester je viens de mettre à jour le code.
cs_AlexMAN
Messages postés1536Date d'inscriptionsamedi 21 décembre 2002StatutMembreDernière intervention24 mai 20091 1 déc. 2004 à 17:05
Ne marche pas chez moi, le programme me renvoie 2tailles differentes pour le dossier 'Mes document', les 2 n'ayant rien a voir avec la choucroute.
29 déc. 2005 à 09:44
Peut etre est-ce due aux fichiers et dossiers cachés ???
4 déc. 2004 à 12:53
#include <string.h>
#include <stdio.h>
#ifndef MAX_PATH
# define MAX_PATH (260u)
#endif
#if defined(_MSC_VER) && _MSC_VER >= 900
typedef signed __int64 _int64_t;
typedef unsigned __int64 _uint64_t;
#else
typedef signed long long _int64_t;
typedef unsigned long long _uint64_t;
#endif
typedef union {
struct {
unsigned long lo;
long hi;
};
_int64_t v;
}largeint;
char * addslash( char * str ) {
register char * ptr = str;
while ( *ptr ) ++ptr;
if ( ptr > str ) {
if ( *(ptr-1) != '\\' )
*ptr++ '\\', *ptr '\0';
}
return str;
}
char * n_strcpy( char * dst, char * src, unsigned sz ) {
char * bos = dst;
while ( sz-- && *src )
*dst++ = *src++;
*dst = '\0';
return bos;
}
void find_files( char * root, _uint64_t * size ) {
HANDLE find;
WIN32_FIND_DATA wfd;
char path[MAX_PATH+8];
largeint li;
addslash( n_strcpy( path, root, MAX_PATH ) );
strcat( path, "*.*" );
find = FindFirstFile( path, &wfd );
if ( find != INVALID_HANDLE_VALUE ) {
do {
if ( !( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) ) {
li.lo = wfd.nFileSizeLow;
li.hi = wfd.nFileSizeHigh;
(*size) += li.v;
/* ou
(*size) += ( wfd.nFileSizeLow + wfd.nFileSizeHigh );
*/
}
} while ( FindNextFile( find, &wfd ) );
FindClose( find );
}
}
void find_directory( char * root, _uint64_t * size ) {
HANDLE find;
WIN32_FIND_DATA wfd;
char path[MAX_PATH+8];
char nroot[MAX_PATH+8];
find_files( addslash( root ), size );
n_strcpy( path, root, MAX_PATH );
strcat( path, "*.*" );
find = FindFirstFile( path, &wfd );
if ( find != INVALID_HANDLE_VALUE ) {
do {
if ( (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ) {
if ( *(wfd.cFileName) != '.' ) {
n_strcpy( nroot, root, MAX_PATH );
strcat( nroot, wfd.cFileName );
find_directory( nroot, size );
}
}
} while ( FindNextFile( find, &wfd ) );
FindClose( find );
}
}
int main( int argc, char * argv[] ) {
char root[MAX_PATH];
_uint64_t size = 0;
strcpy( root, "c:\" );
find_directory(root, &size);
printf( "Directory size: %I64u byte(s)\n", size );
return 0;
}
3 déc. 2004 à 17:53
Ca a pas l'air de trop avancer: le disque dur n'est pas utilisé et l'UC est à 0%
3 déc. 2004 à 15:10
Concrétement, tu peux pas prendre un .h et un .cpp pour le mettre dans ton prog et faire
#include "xxx.h"
__int64 taille = GetDirSize("...")
mais comme l'optique est didactique et que le but n'est pas de faire une bibliothèque standard réutilisable, ca n'est pas génant. Je suis conscient aussi du fait que de mettre la variable dwSize en globale plutot qu'en retour de fonction (comme on pourrait l'attendre) augmente les performances, nottament pour la pile et la récursivité
Mais après, chacun est à meme d'utiliser ca (ou non) pour ses propres besoins.
Bon travail
a+
1 déc. 2004 à 18:52
Pourquoi ré-inventer la roue quand celle-ci tourne bien ? Et puis tu oublies quand même la fonction qui calcul la taille, elle ne s'est pas écrite toute seule.
1 déc. 2004 à 18:29
Et pour repondre à ta "pensée", j'ai autant de respect pour Arnotic qu'il n'en a pour moi :-) ...le respect est un phénomène qui est toujours dans les 2sens.....non ? :-))
1 déc. 2004 à 18:24
Je pense ke tu devrais avoir quand mm plus de respect pour Arnotic...
1 déc. 2004 à 18:13
Chez moi, ça semble marcher, il me retourne une valeur 1fois sur 2, si on prend bien soin à ne pas lui donner qqch de trop gros :| ....sinan, ben, après regard sur ta source, j'ai comme je le pensé, rien vu de bien nouveau : un pathfinder de dossier, et un GetFileSize pr chaq fichier lu...mouais, c'est trop recherché, tu as du "te fouler un neuronne" pour trouver ça! Je tiens à dire à tout ceux qui liront son code, que si ils l'aimen sachez que au moins la moitié du code provient de bruNews et à été copié tel quel, genre :
char* bnstrcpy(char *dst, char *src); // le strcpy de bruNews....
sinan, il ya également la fonction BOOL DirExists(const char* pszFile), qui a été copié TELLE QUELLE de chez bruNews, source dispo ici (si vous voulez vérifier) :
http://www.cppfrance.com/code.aspx?ID=17138
idem, pr la fct int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM dwData);
En clair, la source a été pompée telle quelle sur +de 80%, la seule chose qu'il a crée, c'est la dialoguebox, et sachant qu'il utilise Visual C++, il a l'outil de création rapide de dialoguebox, dc la, comme vous voyez bien, arnotic a "fait aucun effort", il s'est trop trop "fouler un neuronne"...et j'en passe pour les citations (hein arnotic ?) ... dc voila, c'est vraiment prendre les programmeurs de codes source pr du bétail à qui on réitére le même code.... ! :| surtout qd on fait 10fois pire, on arrete de critiquer les autres! bye M.Admin !
1 déc. 2004 à 17:41
1 déc. 2004 à 17:38
1 déc. 2004 à 17:32
dwsize = 0; // avant toute chose
.....
1 déc. 2004 à 17:21
1 déc. 2004 à 17:05
++ Arnotic
+2(p-n)