Program powodujący wyjątek $C0000005

0

Witam,
Piszę program używając RAD Studio XE2. Pisze w Delphi. I tak oto podczas kompilacji otrzymuję monit o wyjątku:

Project Test.exe raised exception class $C0000005 with message 'access violation at 0x0067d418: read of address 0x00000038'.

Starając się określić co i gdzie jest nie tak wykryłem, że błąd pojawia się podczas wypełniania komponentu TJvDBGrid (w pierwszym IF'ie konkretnie):

<code=delphi

procedure TOknoGl.JvDBGrid20GetCellProps(Sender: TObject; Field: TField;
AFont: TFont; var Background: TColor);
begin
if (Field <> nil) and (Field.FieldName = 'Nazwa') and (Tab.FieldByName('Rzad').AsInteger in [3..7,9,11,15]) then
begin
AFont.Style:= AFont.Style + [fsItalic];
end;
if (Field <> nil) and ((Field.FieldName = 'Suma_doba') or (Field.FieldName = 'Suma')) then
begin
Background:= $00FFF4EA;
AFont.Color:= clBlack;
end;
if (Field <> nil) and (Tab.FieldByName('Rzad').AsInteger in [10,16]) then
begin
AFont.Style:= AFont.Style + [fsBold];
end;
end;


Później przeszukałem pamięć i pod adresem 0x0067d418 znajduje się instrukcja ***move eax, [ebx+$38]***. Program pisany jest na maszynie 32-bitowej i z użyciem takiego debuggera. Wie ktoś jak temu zaradzić?
0

sprawdzasz Field czy nie jest nil (i to kilka razy, niepotrzebnie), a nie sprawdziłeś czy FieldByName cokolwiek zwraca.

1 użytkowników online, w tym zalogowanych: 0, gości: 1