在调试时出现这个
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004C75D5 in module 'Project1.exe'.Read of address 00000000'
返回程序时 光标是指向这行代码:
luqu[i,0]:=stucode1;这段程序完整如下:
procedure TForm8.Button8Click(Sender: TObject);
var
stucode1:integer;
total1:integer;
i:integer;
j:integer;begin
with adoquery6 do
begin
close;
sql.Clear;
sql.Add('select n=count(*) from LINSHI');
open; close;
sql.Clear;
sql.Add('select number=COLLEGE.plannumber from COLLEGE,ENROLL where COLLEGE.collcode=ENROLL.onedream and ENROLL.onedream=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
open; SetLength(luqu,n,2);
SetLength(B,n); dbgrid3.DataSource.DataSet.First;
for i:=0 to DBGrid3.DataSource.DataSet.RecordCount-1 do
begin
stucode1:=dbgrid3.DataSource.DataSet.FieldValues['stucode'];
total1:=dbgrid3.DataSource.DataSet.FieldValues['total'];
luqu[i,0]:=stucode1;
luqu[i,1]:=total1;
dbgrid3.DataSource.DataSet.Next;
end; i:=0;
while i <= n-1 do
begin
B[i]:=luqu[i,1]*100+luqu[i,0];
inc(i);
end; QuickSort(B[n],0,n-1); end;
if n>number then
begin
i:=n-1;
while i>n-number-1 do
begin
j:=0;
while j<n do
begin
luqu[j,0]:=B[j] mod 100;
luqu[j,1]:=B[j] div 100;
inc(j);
end;
id:=inttostr(luqu[i,0]);
with adoquery6 do
begin
close;
sql.Clear;
sql.Add('update STUDENT set admitstate=shi where stucode=:a');
parameters.ParamByName('a').Value:=trim(id);
ExecSQL;
close;
sql.Clear;
sql.Add('update STUDENT set admitcoll=:b where stucode=:a');
parameters.ParamByName('a').Value:=trim(id);
parameters.ParamByName('b').Value:=trim(edit1.Text);
ExecSQL;
end;
dec(i);
end;
with adoquery6 do
begin
close;
sql.clear;
sql.add('select * from STUDENT where admitcoll=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
open;
end;
end else
begin
with adoquery6 do
begin
close;
sql.Clear;
sql.Add('update STUDENT set admitstate=shi where STUDENT.stucode=ENROLL.stucode and ENROLL.onedream=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
ExecSQL; close;
sql.Clear;
sql.Add('update STUDENT set admitcoll=:b where STUDENT.stucode=ENROLL.stucode and ENROLL.onedream=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
ExecSQL; close;
sql.clear;
sql.add('select * from STUDENT where admitcoll=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
open;
end;
end;end;我是初学delphi 要做一个招生管理系统 这段代码是要实现录取 大家帮忙看看 谢谢了!!!!
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004C75D5 in module 'Project1.exe'.Read of address 00000000'
返回程序时 光标是指向这行代码:
luqu[i,0]:=stucode1;这段程序完整如下:
procedure TForm8.Button8Click(Sender: TObject);
var
stucode1:integer;
total1:integer;
i:integer;
j:integer;begin
with adoquery6 do
begin
close;
sql.Clear;
sql.Add('select n=count(*) from LINSHI');
open; close;
sql.Clear;
sql.Add('select number=COLLEGE.plannumber from COLLEGE,ENROLL where COLLEGE.collcode=ENROLL.onedream and ENROLL.onedream=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
open; SetLength(luqu,n,2);
SetLength(B,n); dbgrid3.DataSource.DataSet.First;
for i:=0 to DBGrid3.DataSource.DataSet.RecordCount-1 do
begin
stucode1:=dbgrid3.DataSource.DataSet.FieldValues['stucode'];
total1:=dbgrid3.DataSource.DataSet.FieldValues['total'];
luqu[i,0]:=stucode1;
luqu[i,1]:=total1;
dbgrid3.DataSource.DataSet.Next;
end; i:=0;
while i <= n-1 do
begin
B[i]:=luqu[i,1]*100+luqu[i,0];
inc(i);
end; QuickSort(B[n],0,n-1); end;
if n>number then
begin
i:=n-1;
while i>n-number-1 do
begin
j:=0;
while j<n do
begin
luqu[j,0]:=B[j] mod 100;
luqu[j,1]:=B[j] div 100;
inc(j);
end;
id:=inttostr(luqu[i,0]);
with adoquery6 do
begin
close;
sql.Clear;
sql.Add('update STUDENT set admitstate=shi where stucode=:a');
parameters.ParamByName('a').Value:=trim(id);
ExecSQL;
close;
sql.Clear;
sql.Add('update STUDENT set admitcoll=:b where stucode=:a');
parameters.ParamByName('a').Value:=trim(id);
parameters.ParamByName('b').Value:=trim(edit1.Text);
ExecSQL;
end;
dec(i);
end;
with adoquery6 do
begin
close;
sql.clear;
sql.add('select * from STUDENT where admitcoll=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
open;
end;
end else
begin
with adoquery6 do
begin
close;
sql.Clear;
sql.Add('update STUDENT set admitstate=shi where STUDENT.stucode=ENROLL.stucode and ENROLL.onedream=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
ExecSQL; close;
sql.Clear;
sql.Add('update STUDENT set admitcoll=:b where STUDENT.stucode=ENROLL.stucode and ENROLL.onedream=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
ExecSQL; close;
sql.clear;
sql.add('select * from STUDENT where admitcoll=:a');
parameters.ParamByName('a').Value:=trim(edit1.Text);
open;
end;
end;end;我是初学delphi 要做一个招生管理系统 这段代码是要实现录取 大家帮忙看看 谢谢了!!!!
sql.Clear;
sql.Add('select n=count(*) from LINSHI');///这就是楼主初始化n的语句?
open;看起来n没有被赋值过。
写了form1.free
没写的时候就无法使用登陆窗体,写了之后就出现了与楼主几乎一样的问题