violation d'acces à la lecture - C - Programmation
Marsh Posté le 15-05-2006 à 19:50:19
balise code S.V.P
Marsh Posté le 15-05-2006 à 20:46:12
Question bordélique qui laisse présager de méthodes d'isolations de code non moins bordéliques.
A tous les coups, "ic" n'est pas alloué en mémoire.
Mais c'est du pifomètre, un coup de boule de cristal, parce qu'on n'a ni la définition de ic, ni celle d'av, le code donné n'est pas synthétique (pas d'isolation de l'erreur, code commenté qui pollue, ...), etc.
C'est pratiquement impossible de t'aider autrement qu'en te disant de nettoyer et de mettre au propre ton code.
Marsh Posté le 15-05-2006 à 17:46:51
bonjour tous ,
ca fait une semaine non stop ,que je galere sur mon programme .il se compile sans erreur ,l'interface se lance mais au moment d'appuyer sur "tri" pour faire appel à une fonction qui fait du traitement d'image sur bmp ,il me dit "exeption non gérée : violation d'accés à la lecture a l'emplacement 0x0000.."
mon prelmier programme decoupe 1 image bitmap en imagettes (ça fonctionnait en mode console )
mon 2eme va chercher tous les fichiers bitmap dans un folder et il marche .
Le tout est écrit sous Visual C++ en C avc des points cpp.
le but étai d'appeler mes fonctions de decoupe (main transformé pour l'occasion ) et je les traitent à la chaine avc iCount++....
je sui plu quoi faire !voila mon winapi main ou j'appelle la fonction de traitement d'image:
while(FindNextFile(haResult,&w32fd)!=0){
GetWindowText(hwPathSource,szTriFile,MAX_PATH);
GetWindowText(hwPathDest,szPathDest,MAX_PATH);
SendMessage(hwProgressBar,PBM_SETPOS,(long)100,0);
lstrcat(szPathDest,"\\" );
lstrcat(szPathDest,w32fd.cFileName);
lstrcat(szTriFile,"\\" );
lstrcat(szTriFile,w32fd.cFileName);
if(boChekDep){
MoveFile(szTriFile,szPathDest);
}
if(boChekCopy){ // c'est ICI!!!
t_img_cut ic;
init_ic(av, i&c);
process_ic(&ic);
close_ic(&ic);
//printf("fini\n" );
while (500)
;
//CopyFile(szTriFile,szPathDest,TRUE);
}
if(boChekDel){
DeleteFile(szTriFile);
}
iCount++;
sprintf(szBuffer,"%d fichier(s) traité(s)",iCount);
SetWindowText(hwStatusBar,szBuffer);
SendMessage(hwProgressBar,PBM_SETPOS,(long)0,0);
SetWindowText(hwView,szTriFile);
SendMessage(hwProgressBar,PBM_SETPOS,(long)100,0);
}
if(boChekCopy)SetWindowText(hwView," Fichier(s) copié(s) avec succčs" );
if(boChekDel)SetWindowText(hwView," Fichier(s) supprimé(s) avec succčs" );
if(boChekDep)SetWindowText(hwView," Fichier(s) déplacé(s) avec succčs" );
}
}
et voila ou le debug me renvoie au moment du message d'erreur:
void init_ic(char **av,t_img_cut *ic)
{
ic->av_zero=av[0];//c'est ICI
ic->image_buffer = load_bitmap_file(av[1], &(ic->image_size.x), &(ic->image_size.y), &(ic->image_info_header));
if (av[1] == NULL)
{
//fprintf(stderr, "I must have a 24bit bmp as parameter\n" );
exit(0);
}// changement c'etai av[1]
ic->base_file = less_extension(av[1]);
if (ic->base_file == NULL)
{
//fprintf(stderr, "error in filename of %s\n", av[1]);
exit(0);
}
ic->image_buffer_len = ic->image_size.x * ic->image_size.y * 3;
//printf("width tile size :\n" );
//scanf("%d", &(ic->tile_size.x));
//printf("height tile size :\n" );
//scanf("%d", &(ic->tile_size.y));
//ic->tile_size.x=&(ic->image_size.x*1/5);// on assigne une taille fixe pour le moment
//ic->tile_size.y=&(ic->image_size.y*1/4);
ic->tile_size.x=12;//changement
ic->tile_size.y=15;//changement
j'espere que quelqu'un pourra sauver mes nerfs.
a biento .
merci à tous d'avance .