begin process at 2012 02 11 11:13:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

filemapping


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

filemapping

jeudi 9 novembre 2006 à 21:49:40 | filemapping

skotmarud

bonjour, j'ai besoin d'aide car je ne sais pas lire un "buffer" octet par octet pour traiter chaque octet un par un à la lecture d'un fichier binaire. Après pas mal de recherches j'ai lu (http://www.developpez.net/forums/archive/index.php/t-2566.html) qu'il était plus rapide d'utiliser le filemapping pour la lecture de gros fichier alors j'ai repris un tuto ici : http://perso.orange.fr/luce.yves/_tut13.html que j'ai traduit ci-dessous -> #include #include int main(int argc, char *argv[]) { HANDLE fichierlu; HANDLE fichiermap; HANDLE crefichier; LPCTSTR pmem; DWORD taille; DWORD taillecri; fichierlu = CreateFile("test.bin",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL); fichiermap = CreateFileMapping(fichierlu,NULL,PAGE_READONLY,0,0,NULL); pmem = (LPTSTR)MapViewOfFile(fichiermap,FILE_MAP_READ,0,0,0); crefichier = CreateFile("test2.bin",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); taille = GetFileSize(fichierlu,NULL); WriteFile(crefichier,pmem,taille,&taillecri,NULL); printf("%d octets\n",taillecri); UnmapViewOfFile(&pmem); CloseHandle(fichierlu); CloseHandle(fichiermap); CloseHandle(crefichier); system("PAUSE"); return 0; } malheureusement le tuto ne va pas plus loin que la simple copie de fichier utilisant le file mapping. mon soucis maintenant c'est comment lire "pmem" octet par octet ? comment naviguer dedans ? s'il vous plait, merci d'avance !
jeudi 9 novembre 2006 à 21:59:33 | Re : filemapping

skotmarud

Je suis désolé FireFox n'a pas mis les retours à la ligne je double post donc :-/ bonjour, j'ai besoin d'aide car je ne sais pas lire un "buffer" octet par octet pour traiter chaque octet un par un à la lecture d'un fichier binaire. Après pas mal de recherches j'ai lu (http://www.developpez.net/forums/archive/index.php/t-2566.html) qu'il était plus rapide d'utiliser le filemapping pour la lecture de gros fichier. Alors j'ai repris un tuto ici : http://perso.orange.fr/luce.yves/_tut13.html que j'ai traduit ci-dessous -> #include #include int main(int argc, char *argv[]) { HANDLE fichierlu; HANDLE fichiermap; HANDLE crefichier; LPCTSTR pmem; DWORD taille; DWORD taillecri; fichierlu = CreateFile("test.bin",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL); fichiermap = CreateFileMapping(fichierlu,NULL,PAGE_READONLY,0,0,NULL); pmem = (LPTSTR)MapViewOfFile(fichiermap,FILE_MAP_READ,0,0,0); crefichier = CreateFile("test2.bin",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); taille = GetFileSize(fichierlu,NULL); WriteFile(crefichier,pmem,taille,&taillecri,NULL); printf("%d octets\n",taillecri); UnmapViewOfFile(&pmem); CloseHandle(fichierlu); CloseHandle(fichiermap); CloseHandle(crefichier); system("PAUSE"); return 0; } malheureusement le tuto ne va pas plus loin que la simple copie de fichier utilisant le file mapping. mon soucis maintenant c'est comment lire "pmem" octet par octet ? comment naviguer dedans ? s'il vous plait, merci d'avance !
jeudi 9 novembre 2006 à 23:12:17 | Re : filemapping

racpp

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Tu peux faire:
BYTE* pmem;
ensuite:
pmem=(BYTE*) MapViewOfFile(....
Ainsi tu pourras naviguer dans la zone mémoire commençant par pmem octet par octet.

jeudi 9 novembre 2006 à 23:12:21 | Re : filemapping

Ombitious_Developper

Réponse acceptée !
Salut:

Je pense que tu dois changer:

LPCTSTR pmem; 
par

LPCSTR pmem;

pour éviter tout problème causé par Unicode

Puis:

pmem = (LPCSTR)MapViewOfFile(fichiermap, FILE_MAP_READ, 0, 0, 0);


Enfin:

Tu parcours ton tableau octet par octet:

for (int index=0; index<taille; ++index) {
    // travailler avec l'octet pmem [index]
}
vendredi 10 novembre 2006 à 01:13:39 | Re : filemapping

skotmarud

Gé ni al -> ça marche du tonnerre! merci à vous de vôtre précieuse aide! A bientôt :-)


Cette discussion est classée dans : octet, pmem, fichierlu, fichiermap, crefichier


Répondre à ce message

Sujets en rapport avec ce message

Comparer deux fichier [ par LordBob ] Salut a tous, en fait je voudrai creer deux fonctions, la premiere comparerai deux fichiers txt ligne par ligne et la deuximere comparerai deux fich Supprimer les n premiers octet d'un fichier [ par arc59 ] Bonjour, dans mon programme de modification des ID 3 tag, je voudrai permettre à l'utilisateur de supprimer les Id3tag de version 2. Ces tag sont plac Taille de ma structure [ par crocejf2000 ] Salut a tous, J'ai un tres gros probleme qui me bloque toute mon avancé dans mon prog : j'ai une structure : typedef struct{ unsigned short Locate; ch lecture et stockage de bmp [ par adiloyo ] bonjour,j'ai un ptit pb!!en fait, je dois lire une image bmp et puis apres la stocker dans un tableau (octet par octet par exemple). qlq'un peut m'ai lecture et stochage de bmp [ par adiloyo ] bonjour,j'ai un ptit pb!!en fait, je dois lire une image bmp et puis apres la stocker dans un tableau (octet par octet par exemple). qlq'un peut m'ai lecture et stochage de bmp [ par adiloyo ] bonjour,j'ai un ptit pb!!en fait, je dois lire une image bmp et puis apres la stocker dans un tableau (octet par octet par exemple). qlq'un peut m'ai nombre de caractère [ par mig73 ] salut à tousje suis sous visual c++.netj'ai utilisé la fonction suivante:CFile::GetLenght qui me donne la taille en octet du fichier que je lisA parti Affichage image dans zone client + Thread [ par PoluxProg ] Pour afficher une image dans la zone client, j'utilise ce code qui marche plutôt bien: CBitmap *pImage=new CBitmap; pImage->LoadBitmap(IDB_IMAGE); Mon programme croit que c'est la fin du fichier alors que c'est juste l'octet 1A ! [ par MarcPlouhinec ] Mon programme lit un fichier. Il croit que c'est la fin du fichier quand il rencontre l'octet 1A.Comment faire pour qu'il puisse lire tout le fichier comment decaler de 4 octet a gauche [ par pirate75000 ] je doit convertir une image 8 bit vers une 12 bitsla dib est stocker dans un tableau Byte de 8 bitscomment convertir la valeur lue en la décalant de 4


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 3,401 sec (4)

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