本人自己编写的两个简单的类。创建时没有问题,为什么在释放时出现错误提示。大家帮我看看(100分)

  • 主题发起人 主题发起人 wrksky
  • 开始时间 开始时间
W

wrksky

Unregistered / Unconfirmed
GUEST, unregistred user!
由于其他的代码都正确,所以在此只写出两个类的生成和destroy的代码。方便大家帮忙找错误。
TPicStream=class
public
Fpic:TMemorystream;
//图片
Fpictime:Tdatetime;
//时间
FPicway:integer;
//通道
FpicAlarm:integer;
//报警
constructor Create;
destructor Destroy;
end;
constructor TPicStream.Create;
begin
// inherited Create;
Fpic:=TmemoryStream.Create;
end;

destructor TPicStream.Destroy;
begin
fpic.Free;
//inherited Destroy;
end;
//--------------------------
type //负责控制第一个类。
TSavePic=class
private
FPicNum:integer;
//图片存储
fn:integer;
//每一次加一
Fq:Tadoquery;
//入库
FSavepic:array of Tpicstream;
public
procedure SavetoPicStream(jpegPath:String;t:Tdatetime;PicWay:integer;picAlarm:integer);
procedure SavetoDb;
constructor Create(Num:integer;q:TAdoquery);
Destructor Destroy;
end;
constructor TSavePic.Create(Num: integer;q:TAdoquery);
var i:integer;
begin
FpicNum:=num;
Fq:=Q;
SetLength(FSavepic,FpicNum);
for i:=0 to Fpicnum do
Fsavepic:=TpicStream.Create;
end;

destructor TSavePic.Destroy;
var i:integer;
begin
for i:=0 to FpicNum do
FsavePic.Free;
//inherited destroy;
end;
当我在创建 fforpic:Tsavepic;这个类时没有错误。
fforpic:=Tsavepic.Create(10,adoquery1);
当我释放类时出错。
fforpic.Free;
不知道为什么!请帮帮忙!
 
for i:=0 to FpicNum do
//数组下标越界
应改为:
for i:=0 to FPicNum-1 do
 
接受答案了.
 
后退
顶部