begin process at 2012 02 08 21:44:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

probleme dans la lecture d'un fichier


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

probleme dans la lecture d'un fichier

samedi 11 mars 2006 à 23:22:51 | probleme dans la lecture d'un fichier

jack_ryan

bonjour,
voila je cherche a ouvrir un fichier bmp et mon code ne semble pas avoir accés a tout le fichier je m'en remet a vous pour savoir si cela est normal merci d'avance.
 if (GetOpenFileName(&ofn)==TRUE)
       {
       HANDLE fo;
       DWORD lenbloc,s;
       char tampon[1146881],temp[1146881];
       int i;
       nbfichier++;//incremente le nombre total de fichier    
                   //on ouvre le fichier
       fo = CreateFile(ofn.lpstrFile, GENERIC_READ, 0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
       if(fo == INVALID_HANDLE_VALUE)return 1;//on verifie que le fichier est ouvert
       lenbloc = 1146880 ;//recupere la taille du fichier
       tampon = (char) malloc(lenbloc); //alloue la taille du tampon
       ReadFile(fo, tampon, lenbloc, &s, NULL);//lit le fichier et place son contenu dans tampon
       fichier[1][lenbloc+1]=0;
       for(i=0;i<=lenbloc+1;i++) temp[i]= fichier[1][i];
       tampon[lenbloc+1]=0;//place le carractere de fin de chaine a la fin du tampon
       free(tampon);//reinitialise le tampon
       SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM) ofn.lpstrFile);//affiche en haut de la fenetre le chemin et le nom du fichier ouvert
       CloseHandle(fo);//ferme le fichier
       }
samedi 11 mars 2006 à 23:41:58 | Re : probleme dans la lecture d'un fichier

BruNews

Administrateur CodeS-SourceS
ne pas déclarer d'aussi gros buffers locaux, faut alloc dynamique:
char tampon[1146881],temp[1146881];
ensuite on voit plus bas: tampon = (char) malloc(...) ??? faudrait savoir
et (char), serait pas (char*) plutot ?

tampon[lenbloc+1]=0; selon le malloc tu écris hors tableau, ecrasement de données.
surtout que suivi de: free(tampon); ça ne me semble pas utile ce qui est plus haut.

et, etc...

Donne plutot le but à atteindre, on verra ce qu'on peut faire.

ciao...
[ Lien ]
BruNews, MVP VC++
samedi 11 mars 2006 à 23:46:08 | Re : probleme dans la lecture d'un fichier

jack_ryan

en fait ce serai pour stoquer les données dans un tableau dans le but de les lires par la suite
a +
dimanche 12 mars 2006 à 00:32:35 | Re : probleme dans la lecture d'un fichier

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

LPVOID pmem = 0;
DWORD size, d;
fo = CreateFile(ofn.lpstrFile,GENERIC_READ,0,0,OPEN_EXISTING,0,0);
if(fo == INVALID_HANDLE_VALUE) return 1; // ERREUR OUVERTURE
size = GetFileSize(fo, 0);
if(!size || GetLstError()) goto closeFL;
pmem = VirtualAlloc(0, size, MEM_COMMIT | MEM_RESERVE);
if(!pmem) goto closeFL;
d = 0; ReadFile(fo, pmem, size, &d, 0);
if(d != size) {
  VirtualFree(pmem, 0, MEM_RELEASE);
  pmem = 0;
}
closeFL:
CloseHandle(fo);

A ce point si pmem != 0 tu as les octets du fichier dans pmem sur une longueur size.
Pourquoi mettre un zero au bout de pmem ???

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

dimanche 12 mars 2006 à 00:38:58 | Re : probleme dans la lecture d'un fichier

jack_ryan

en fait j'ai fait un mélange des codes que j'ai trouvé, le zero je crois me souvenir que c'était pour marquer la fin de mon tableau mais bon c'est vrai que c'est inutile je vais utiliser ton ton code merci beaucoup


dimanche 12 mars 2006 à 01:00:27 | Re : probleme dans la lecture d'un fichier

jack_ryan

re moi  il ne reconnait pas GetLstError c'est dans quelle librairie?
dimanche 12 mars 2006 à 01:04:52 | Re : probleme dans la lecture d'un fichier

BruNews

Administrateur CodeS-SourceS
GetLastError()
pas évident de taper dans cet éditeur, faut savoir aussi interpréter les fautes de frappe...

ciao...
[ Lien ]
BruNews, MVP VC++
dimanche 12 mars 2006 à 01:06:56 | Re : probleme dans la lecture d'un fichier

jack_ryan

je suis trop nul merci
fabian

dimanche 12 mars 2006 à 01:17:20 | Re : probleme dans la lecture d'un fichier

jack_ryan

VirtualAlloc(0, size, MEM_COMMIT | MEM_RESERVE); je crois qu'il manque un argument mais je ne voit pas lequel
fabian
dimanche 12 mars 2006 à 01:26:27 | Re : probleme dans la lecture d'un fichier

BruNews

Administrateur CodeS-SourceS
OUPS: PAGE_READWRITE en dernier, dur dur...

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

1 2

Cette discussion est classée dans : fichier, tampon, ofn, fo, lenbloc


Répondre à ce message

Sujets en rapport avec ce message

probleme dans l'ouverture de fichier et mise en tampon [ par shadow1779 ] Bonsoir, je commence a maitriser l'API Windows et je me suis mis dans l'idée de me faire un petit bloc notes avec plusieurs petites fonctions mais je besoin d'aide cpp & flash [ par ced73 ] bonjour bonjour ^^ Cela va surement paraitre ridicule, mais il y deux ou trois trucs ou je sèche. Je cherche à charger un flash (.swf) dans une fe CFileDialog [ par epoc ] J'ai un programme qui donne à l'utilisateur la possibilité d'enregistrer un fichier, via une boite de dialogue dont voici le code :CFileDialog m_SaveF WriteFile => caractères non reconnu dans le fichier [ par Flo1987 ] Bonjour,J'ai un problème avec la fonction WriteFile : je cherche à écrire un tableau de double dans un fichier mais je retrouve des caractères non rec Problème avec GetOpenFileName [ par ArthurAuguste ] Bonjour, J'ai un problème avec GetOpenFileName si et seulement si le fichier que j'ouvre fait plus de 93Ko !!!! Si j'ai fait une erreur de programma prise en compte des espaces [ par cytosyn2 ] Bonjour à tous. J'ai un petit programme qui scanne un fichier texte et crée un nouveau fichier identique au premier sauf certains caractères remplacé Problème sauvegarde de fichier [ par sleeper41 ] Bonjour à tous!Voila j'essaie de sauvegarder un fichier txt bloc note sans passer par fichier enregister sous ect ..., mais j'ai quelque soucies.En fa [C++ / commdlg.h] Répertoire courant OPENFILENAME [ par GrosTony ] Salut @ tous,Dans le cadre d'un projet en cours, je doit gérer des enregistrements et chargement de fichier et je n'arrive pas à changer le répertoire probleme d'ouverture [ par catamenia ] bonjours, mon but est d'ouvrir un fichier.voici mon code :void CRobot1Doc::OnFileOpen()   {   CString c = "C:\\RobotEriccUsers\\";     CFileDialog tes Erreur sur fichier [ par LordBob ] Bonjours a tous,voila je suis en train d'écrire un petit programme... Et j'ai a peine commencé que j'ai deja un probleme, seulement je ne sais pas d'o


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 : 6,661 sec (3)

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