Bonjour à tous,

'Delphi7, version Education Professionnelle sur Windows 7)

Dans une même application, dans une première procédure j'utilise la fonction
Scanline ainsi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
    Var P:PByteArray;
            X,Y:Integer;
      Begin
     For Y:= bitmap1.height downto bitmap1.height-300 do
          begin
            P:=PByteArray(bitmap1.scanline[Y]);
            for x:=2 to bitmap1.Width-2800 do
               begin
                P[X]:=Y;
                .......
                .......
et tout se passe bien.

de suite après, j'utilise à la suite une seconde procédure avec la même construction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
      Var P:PByteArray;
            X,Y:Integer;
      begin
         DivMod(bitmap1.width,2,resultat,reste);
         X:=resultat;
         for Y:=bitmap1.height downto bitmap1.height-250 do
         begin
            P:=PByteArray(bitmap1.scanline[Y]);
            P[X]:=Y;
            .......
            .......
et je reçois le message d'erreur "exception ERangeError avec le message Erreur
vérification d'étendue".
Je peux supposer que je manque de mémoire mon bitmap1 comportant 3292 X 2172
pixels.
Comment résoudre ce problème ? je ne sais pas initialiser ce Pointeur P entre chaque
procedure; Il devrait l'être par le lancement de la nouvelle ?
Merci à vous de me guider.