j'ai presque terminé mon logiciel afin de decouper un fichier en
parts... cependant j'ai une erreur et j'arrive vraiment pas a
comprendre, en gros il me decoupe bien ce qui faut mais quand il arrive
en fin de fichier il m'en refet un avec le buffer de la fin et il
recommence sans fin, bref des milliards de fichiers si je le laisse
faire :s
si qqn pouvait me dire ou est l'erreur (ps: y a pas d'erreur a la compilation et c'est en C)
Reprends exemple que je t'ai fait, il y a tout ce qu'il faut pour controle de fin de fichier.
"pointeur" n'est pas un nom judicieux, n'oublie pas que c'est ce qui reçoit le nbr octets lus. Prends aussi un autre DWORD pour nbr octets écrits sinon tu perds ta valeur et aucun controle si erreur écriture.
Allez c'est en bonne voie, encore un essai et si merdouille je te le finirai.
*pnm++ = '.'; // pnm DISPO POUR nros DES MORCEAUX
npart = 0; // TU COMMENCES A 1 SI TU VEUX
fromSRC:
s = 0; ReadFile(hsrc, pmem, lenbloc, &s, 0);
if(!s) goto outSRC; // PLUS D'OCTETS = FIN DE FICHIER
ultoa(npart++, pnm, 10); // NOM DE MORCEAU DANS fname
hdst = CreateFile(fname, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);
if(hdst == INVALID_HANDLE_VALUE) {
// FAIRE ANNONCE ERREUR CREATION FICHIER
goto outSRC;
}
// ON ECRIT LES s OCTETS LUS ET NON PAS lenbloc
d = 0; WriteFile(hdst, pmem, s, &d, 0);
CloseHandle(hdst);
if(d != s) {
// FAIRE ANNONCE ERREUR ECRITURE
goto outSRC;
}
// SI ENCORE POSSIBLES OCTETS ALORS ON RECOMMENCE
if(s >= lenbloc) goto fromSRC;
outSRC:
*(pnm - 1) = 0; // fname RESTITUE COMME ON L'ATROUVE
relMEM: VirtualFree(pmem, 0, MEM_RELEASE);
closeSRC: CloseHandle(hsrc);
// C'EST FINI
possibles erreurs de frappe, tu le dis si compilo fait la tronche.