Здравствуйте, у меня программа на Delphi 10, которая работает с базой данной на sql. При работе программа вылетает и выдает такую ошибку:
Project AMG.exe raised exception class EAccessViolation with message ‘Access violation at address 009AC7D4 in module ‘AMG.exe’. Read of address 000000D0’
Я не могу понять почему два идентичных вызова одного и того же метода приводят к AccessViolation в одном случае (blbRazdel3009Click) и нормальной работе в другом (blbRazdel1009Click).
Код:
procedure TMainForm.blbRazdel1009Click(Sender : TObject);
begin
FreeActiveItem;
if Razdel1009Form=nil then
Razdel1009Form:=TRazdel1009Form.Cre ate(Self);
Razdel1009Form.ManualDock(DockPanel ,nil,alClient);
ActiveForm:=Razdel1009Form;
ActiveBarButton:=blbRazdel1009;
ActiveBarButton.Enabled:=false;
FormResize(Sender);
Razdel1009Form.Show;
Razdel1009Form.GROTMGrid.SetFocus;
Razdel1009Form.GROTMTableView.DataC ontroller.SelectRows(0,0);
end;
procedure TMainForm.blbRazdel3009Click(Sender : TObject);
begin
FreeActiveItem;
if Razdel11_009Form=nil then
begin
Razdel11_009Form:=TForm1.Create(Sel f);
Razdel11_009Form.FormCreate(Sender) ;
end;
Razdel11_009Form.ManualDock(DockPan el,nil,alClient);
ActiveForm:=Razdel11_009Form;
ActiveBarButton:=blbRazdel3009;
ActiveBarButton.Enabled:=false;
FormResize(Sender);
Razdel11_009Form.Show;
Razdel11_009Form.GROTMGrid.SetFocus ;
Razdel11_009Form.GROTMTableView.Dat aController.SelectRows(0,0);
end;
Функция FormCreate:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
I: integer;
Info: PRazdel1Info;
begin
ABDDataModule.GRQuery.Active := false;
ABDDataModule.GRQuery.Active := true;
L := TList.Create;
while not ABDDataModule.GRQuery.Eof do
begin
I := GRTableView.DataController.AppendRe cord;
GRTableView.DataController.Values[I, 0] := false;
GRTableView.DataController.Values[I, 1] :=
ABDDataModule.GRQuery.FieldByName(' name').AsString;
GRTableView.DataController.Values[I, 2] :=
ABDDataModule.GRQuery.FieldByName(' numer').AsInteger;
MAD: [ CODE ] tag required!
Люди добрые, помогите кто чем может
