External SIGSEGV avec gdb (Windows), impliquant un tableau dynamique
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:
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:
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