jack_ryan
Messages postés14Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention26 mai 2007
-
11 mars 2006 à 23:22
jack_ryan
Messages postés14Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention26 mai 2007
-
16 mars 2006 à 13:39
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
}
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 mars 2006 à 23:41
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.
jack_ryan
Messages postés14Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention26 mai 2007 12 mars 2006 à 00:38
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
jack_ryan
Messages postés14Date d'inscriptionvendredi 17 novembre 2000StatutMembreDernière intervention26 mai 2007 13 mars 2006 à 13:12
Bonjour je n'arrive pas à récupérer ce qu'il y a dans pmem et surtout je n'arrive pas a travailler avec les valeur du tableau. Si j'ai bien compris pmem est un tableau de pointeur de type void comment faire pour récupérer un tableau de type char dont je saurai me servir merci d'avance. Fabian
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 13 mars 2006 à 13:38
NON pas un tableau de pointeurs mais un simple tableau.
Un simple cast comme d'habitude suffit:
char *c = (char*) pmem;
Si tu veux un 0 final, alloue size+1, VirtualAlloc aura déjà initialisé pour toi la zone mémoire avec des 0.