+ -
当前位置:首页 → 问答吧 → 这个BMP.FREE为什么出错?

这个BMP.FREE为什么出错?

时间:2011-08-26

来源:互联网

F10,F11为全局热键,要实现的功能为:按F10时创建bmp,bmp1,并响应执行F10热键代码。按F11时跳出循环体,
并释放bmp,bmp1,但在运行时按了F11后提示错误,删除了bmp.free,bmp1.free后就不会提示错误了。

var
  From1:TForm1;
  bool:boolean;


procedure TForm1.hotkey(var msg:tmessage);
var
  bmp,bmp1:tbitmap;
  bool2,bool3:boolean;
begin
  if msg.LParamHi=vk_f11 //按F11停止
  then begin
  bool:=false;
  bmp.free;
  bmp1.free; //*****放在这里提示错误
  end
  else begin
  bmp:=tbitmap.Create;
  bmp1:=tbitmap.Create;
  bmp.LoadFromFile('c\1.bmp');
  bmp1.LoadFromFile('c:\2.bmp');
  bool:=true; //bmp的创建放在这里是避免每次按F10时重复bmp。create
  end;
  if msg.LParamHi=vk_f10 //按F10开始
  then begin
  while bool do
  begin
  while bool2 do
  begin
  //这里面要用到bmp和bmp1
  ...
  end;
  Application.ProcessMessages;
  if bool=false then break;
  while bool2 do
  begin
  //这里面也要用到bmp和bmp1
  ...
  end;
  Application.ProcessMessages;
  if bool=false then break;
  .....
  end;
  end;

作者: ymxuymxu   发布时间: 2011-08-26

当然会提示错误,没有创建是不能释放的。
bmp:=tbitmap.Create;
bmp1:=tbitmap.Create;
bmp.free;
bmp1.free;

作者: ljklxlj   发布时间: 2011-08-26

bmp,bmp1:tbitmap;
  bool2,bool3:boolean;
如果是需要跨事件有效的,不能定义在事件里,而是应该在Tform1里

作者: sz_haitao   发布时间: 2011-08-26

热门下载

更多