Bonjour, dans le cadre de nos cours, nous avons un mini projet en Lazarus à rendre. Le principe est de : à l'aide d'une interface graphique, prendre une image mère (grande) et la refaire avec une mosaïque de petites images (32*32).

Il se trouve que (en plus de devoir le rendre demain...) il y a un soucis sur une procedure, et depuis 5h nous sommes dessus à comprendre et ... non...
Quand on arrive à l'execution de cette procedure, un message d'erreur apparait : "acces violation" et l'execution s'arrête.

Help !

infos :
le type timage est un record avec hauteur largeur et un pointeur (qui s'appelle Pixels) vers un tableau de pixels
le type tabpimages est un tableau de timages

La procédure en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure decoupimage(I:Timage ; H,L:longint ; var tabpimages : Tableau_pimages);
var ha,la,m,n,o,p:longint;
    pimage:Timage;

begin
     New(pimage.Pixels);
     pimage.largeur:=32;
     pimage.hauteur:=32;
     ha:=H DIV 32;
     la:=L DIV 32;
     for m:= 1 to ha do
       begin
         for n:= 1 to la do
           begin
             for o:= 1 to 32 do
               begin
                 for p:= 1 to 32 do
                   begin
                        pimage.Pixels^[o,p]:=I.Pixels^[(m-1)*32+o,(n-1)*32+p];
                   end;
               end;
             tabpimages[m,n]:=pimage;
             pimage.cm:=cmoyenne(pimage);
           end;
       end;
     dispose(pimage.Pixels);
end;
Merci d'avance.