Bjr à tous,

Je suis confronté à un pb franchement gonflant avec le débogueur gdb.

Lorsque j'utilise une variable tableau, gdb me remonte une 'sigsegv' au droit d'une utilisation de tableau dynamique correctement initialisé, erreur qui n'a pas lieu d'être.

Voici la déclaration de ma classe qui pose pb
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
 
const COLORS_TABLE_SIZE = 256;
type TArray256Colors = array of TColor;
type
 
{ TPalette256 }
 
 TPalette256 = class
    procedure GenerateWeb216Palette; deprecated;
    procedure GenerateACADPalette; deprecated;
    procedure GenerateGrayScalePalette; deprecated;
  private
    FColorArray    : TArray256Colors;
    procedure ViderTableCouleurs();
  public
    procedure GenerateTOPOROBOTPalette();
    function  GetColorByIndex(const Idx: Integer):TColor;
 
end;
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
28
29
30
31
32
33
34
35
36
37
38
 
procedure TPalette256.GenerateWeb216Palette;
var
  i, j, k  : integer;
  r,g,b    : byte;
  IdxColor : integer;
begin
  AfficherMessage(ClassName+'.GenerateWeb216Palette');
  ViderTableCouleurs();
  for i:=1 to 6 do
    for j:=1 to 6 do
      for k:=1 to 6 do
        begin
          IdxColor:=(i-1)*36+
                    (j-1)*6+
                    (k-1);
          r:=255 - (i-1) * 51;
          g:=255 - (j-1) * 51;
          b:=255 - (k-1) * 51;
          FColorArray[IdxColor]:=RGBToColor(r,g,b);
        end;
end;
function TPalette256.GetColorByIndex(const Idx: Integer): TColor;
begin
  try
    Result := self.FColorArray[Idx]; // sous GDB, provoque un External SIGSEGV
  except
    Result := clSilver;
  end;
end;
 
procedure TPalette256.ViderTableCouleurs;
var
  i: Integer;
begin
  SetLength(FColorArray, COLORS_TABLE_SIZE);
  for i:= 0 to COLORS_TABLE_SIZE - 1 do FColorArray[i] := clSilver;
end;
Franchement exaspérant, ce genre de pb qui m'entrave dans mon métier