begin process at 2012 05 28 07:38:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

api CreateFile() et ReadFile()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

api CreateFile() et ReadFile()

mardi 22 novembre 2005 à 20:19:23 | api CreateFile() et ReadFile()

shadow1779

Membre Club
Bonsoir,

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)

http://shadow1779.ifrance.com/cut.h
.
mardi 22 novembre 2005 à 20:45:05 | Re : api CreateFile() et ReadFile()

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
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.

ciao...
[ Lien ]
BruNews, MVP VC++
mardi 22 novembre 2005 à 20:47:06 | Re : api CreateFile() et ReadFile()

shadow1779

Membre Club
ok j'veu finir seul lol :D en tout cas merci de ton aide ^^, pis la c'est la version console mais apres faut que j'le fasse en mode fenestré :D

.
mardi 22 novembre 2005 à 20:48:57 | Re : api CreateFile() et ReadFile()

BruNews

Administrateur CodeS-SourceS
ah ben oui j'y compte bien, on n'est plus au moyen age.

ciao...
[ Lien ]
BruNews, MVP VC++
mardi 22 novembre 2005 à 21:53:06 | Re : api CreateFile() et ReadFile()

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

#define MEMDISPO      (MEM_RESERVE | MEM_COMMIT)

char fname[264];
// on dit que tu as déjà récupéré fname

HANDLE hsrc, hdst;
DWORD size, d, s, lenbloc, npart;
BYTE *pmem;
char *pnm;
hsrc = CreateFile(fname, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN, 0);
if(hfl == INVALID_HANDLE_VALUE) {
  // FAIRE ANNONCE ERREUR FICHIER INDISPONIBLE
  return;
}
// FAIRE RECUP ICI de lenbloc
// QUI SERA TAILLE VOULUE POUR FICHIERS DECOUPES

// fname SERA MODIFIE MAIS RESTITUE EN SORTIE
pnm = fname + strlen(fname); // ON PLACE pnm SUR FIN DE fname

pmem = (BYTE*) VirtualAlloc(0, lenbloc, MEMDISPO, PAGE_READWRITE);
if(!pmem) {
  // FAIRE ANNONCE ERREUR MEMOIRE
  goto closeSRC;
}

*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.

ciao...
[ Lien ]
BruNews, MVP VC++

mardi 22 novembre 2005 à 22:04:16 | Re : api CreateFile() et ReadFile()

shadow1779

Membre Club
ouai merci beaucoup :D


Cette discussion est classée dans : fin, erreur, api, createfile, readfile


Répondre à ce message

Sujets en rapport avec ce message

fopen -> CreateFile... [ par AlexMAN ] Bonjour, Voila, alors j'ai pas mal cherché une API ki permettait de recuperer une ligne dans un fichier ( fgets) mais je n'ai rien trouvé...Donc j'ai Reprendre la main sur une erreur de SCANF [ par gollum ] voila : mon monceau de codec='n';printf("Entrer le coeff %d du terme %d \n",i,i);result = scanf("%f",&coef); while (result==0 && c=='n'){ printf("f Erreur 1784 Problème ReadFile [ par usbeck ] Bonjour, (le nom un peu compliqué du sujet est pour les recherches, parce que j'aimerai bien que tous les titres soient précis ( "j'ai un probleme" c ReadFile et port USB [ par je_ne_viens_qu1_fois ] Bonjour à tousJ'aurai besoin d'une aide en toute urgence concernant le dialogue avec un microcontroller via le port USB.J'ai résussi à faire le "Creat EOF avec les API Windows [ par faucheuse ] Bien le bonjour ami(e)s programmeurs et programmeuzes,Je débute avec les API Windows et j'ai une classe à faire pour le manipulation de fichier (Creer Programmation multimedia (wave) avec API windows [ par csauvane ] Bonjour, Pour suivre les contraintes d'un projet je dois développer une petite application permettant de lire/enregistrer, afficher et faire quelques Probleme avec API mysql [ par Kaioshin12 ] Bonjour à tous, Je suis débutant en C++ et j'ai un petit soucis avec l'API mysql. En effet, je fais une petite appli en C++ avec une connexion à une erreur de segmentation - ajout en fin de liste [ par WildChild54 ] Salut à tous!J'ai une procédure recursive sensée ajouter un élément en fin de liste qui pose un problème: je ne vois aucune erreur et pourtant lorsque segmentation fault ! [ par chochatown ] Bonjour,j'ai u probleme dans mon application ou j'ai une erreur dans la lib de QT4 qui se declenche lorsque j'execute et non pas je compile cette erre Erreur C2143 [ par AGIS ] Ce message d'erreur dit : absence de ';' avant  '


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,004 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales