begin process at 2010 02 10 16:56:18
  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 Afficher le contenu d'un fichier dans un listBox [ par khaoula85 ] Bonjour, Je veux créer une interface graphique (MFC) qui, à l'aide d'un bouton, parcourt les fichiers .txt, affiche le chemin du fichier sélectionné d OPENFILENAME [ par mat74 ] salut à tous, voila je voudrais ouvrir une boite dialogue pour enregistrer un fichier, récupérer la valeur de type, et rajouter un bouton suivant la v Afficher le contenu d'un fichier texte dans un Edit Control d'une boite de dialogue [ par blasko370 ] Bonjour à tous.Je me permet de vous solliciter car malgré de nombreuses recherches sur le net (forums diverses), je n'ai pas trouvé la solution à mon Problème d'écriture dans une fichier avec VC++ [ par snoopi_19ans ] j'ai développé une petite application avec MFC sur VC++ V6 : **************************** void CTest_Dlg::OnOK() { // TODO: Add extra validation her Ouvrir un fichier : problème de LPWSTR ne VC++ [ par marco123456789 ] Je souhaterais obtenir l'adresse d'un fichier en utilisant une fenetre OUVRIR de WINDOWS (un OPENFILENAME).Or le code ne compile pas car il semble imp Récupérer séparément Nom et Chemin d'un fichier [ par cartes1 ] BonjourAvec Visual studio C++ 6 en Api pur, je n'arrive pas à récupérer séparément le nom d'un fichier d'un côté et le chemin de l'autre ( sans le nom


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 0,343 sec (3)

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