F
foxgirl
Unregistered / Unconfirmed
GUEST, unregistred user!
一个奇怪的问题请教:下面过程中ms是一个内存流数组,用于装入数据库中的图像,下面的代码已装入图像,但有一个关于high(ms)和数据库表记录总数-1 之间的差别问题想请教。
var
Formbase: TFormbase;
ms: Array of TmemoryStream;
j:integer;
implementation
..............
..............
procedure TFormbase.ImageEnDBView1Click(Sender: TObject);//这个过程用于显示流中前一幅图,可以正常运行,当处于流中第一幅图时,再单击一次,不会出现错误提示;
begin
if (j-1>=low(ms)) then
begin
j:=j-1;
ms[j].Position:=0;
formbase.ImageEndbView1.io.LoadFromStream( ms[j] );
end;
end;
procedure TFormbase.ImageEnDBView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);//这个过程用于显示流中后一幅图,可以正常显示,但当处于最后一张图时,再右击一次,就出现了地址错误提示
begin
if (button=mbright) and (j+1 <= high(ms) ) then
begin
j:=j+1;
ms[j].Position:=0;
formbase.ImageEndbView1.io.LoadFromStream( ms[j] );
end;
end;
但是把上面这个过程中的high(ms)不用high来表示,而改为数据库表的记录总数-1表示时又不会发出越界的寻址错误了,不知为何?
procedure TFormbase.ImageEnDBView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (button=mbright) and (j+1 <= tinytable1.RecordCount -1 ) then
begin
j:=j+1;
ms[j].Position:=0;
formbase.ImageEndbView1.io.LoadFromStream( ms[j] );
end;
end;
var
Formbase: TFormbase;
ms: Array of TmemoryStream;
j:integer;
implementation
..............
..............
procedure TFormbase.ImageEnDBView1Click(Sender: TObject);//这个过程用于显示流中前一幅图,可以正常运行,当处于流中第一幅图时,再单击一次,不会出现错误提示;
begin
if (j-1>=low(ms)) then
begin
j:=j-1;
ms[j].Position:=0;
formbase.ImageEndbView1.io.LoadFromStream( ms[j] );
end;
end;
procedure TFormbase.ImageEnDBView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);//这个过程用于显示流中后一幅图,可以正常显示,但当处于最后一张图时,再右击一次,就出现了地址错误提示
begin
if (button=mbright) and (j+1 <= high(ms) ) then
begin
j:=j+1;
ms[j].Position:=0;
formbase.ImageEndbView1.io.LoadFromStream( ms[j] );
end;
end;
但是把上面这个过程中的high(ms)不用high来表示,而改为数据库表的记录总数-1表示时又不会发出越界的寻址错误了,不知为何?
procedure TFormbase.ImageEnDBView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if (button=mbright) and (j+1 <= tinytable1.RecordCount -1 ) then
begin
j:=j+1;
ms[j].Position:=0;
formbase.ImageEndbView1.io.LoadFromStream( ms[j] );
end;
end;