大家帮忙看看,我有两个按钮,每个按钮功能是动态生成了100个SpeedButton,但是在点每个按钮先进行释放,但是不知道为什么总是报内存错误切换两次就自动关闭了,释放的代码如下,请大家指教。//调用
    FreeSpeedButton(DDButton,backImg);
    DDButton[I]:=TSpeedButton.Create(self);
    backImg[I] :=TImage.Create(self);
    backImg[I].Parent:=Form1.ScrollBox3;
    backImg[I].Picture.LoadFromFile('.\img\new2.JPG');
    DDButton[I].Parent:=Form1.ScrollBox3;
    DDButton[I].Caption:=StrTmp;
    DDButton[I].Width:=iwidth;
    backImg[I].Width:=iwidth;
    DDButton[I].Height:=iHeight;
    backImg[I].Height:=iHeight;
    backImg[I].Top := iHtoH + 50 * (I div iPerLine - integer((I mod iPerLine)=0));
    backImg[I].Left := iWtoW + (iWidth+iWtoW) * ((I-1) mod iPerLine);
    DDButton[I].Top := iHtoH + 50 * (I div iPerLine - integer((I mod iPerLine)=0));
    DDButton[I].Left := iWtoW + (iWidth+iWtoW) * ((I-1) mod iPerLine);
    DDButton[I].Font.Color:=clYellow;
    DDButton[I].Flat:=true;
    backImg[I].Show;
    DDButton[I].Show;
//释放
procedure FreeSpeedButton(TmpBtn : array of TSpeedButton;TmpImg : array of TImage);
var
  i : integer;
begin
  for i:=1 to 100 do
  begin
    if TmpBtn[i]<>nil then
    begin
      try
        TmpBtn[i].Destroy;
        TmpImg[I].Destroy;
      except
        break;
      end;
    end
    else
    begin
      break;
    end;
  end;
end;