我的一个项目中有10和个指头,全部用image图片显示,每个图片代表一个指头,每个指头定义了一个integer类型的全局变量存储每个指头的状态。问题是当某个指头被单击后,我如何记录是哪个指头被单击了,因为指头被单击就表示这个指头被选中了,其它操作会引起这个被选中指头的状态的改变,我需要把这个状态记录到相应的全局变量中。于是我想出了定义一个全局指针变量finger_selected:^integer;在指头被单击的过程procedure finger_click(aimage:Timage;finger_name:string;finger:OleVariant);//中,finger就是表示指头状态的全局变量,aimage是被单击的图片。过程部分内容如下
procedure finger_click(aimage:Timage;finger_name:string;finger:OleVariant);//手指单击过程
begin
finger_selected:=@finger;//指针指向变量地址
//以下是测试
finger_selecte^:=888;
showmessage(inttostr(finger));//试验证明将显示888
end;
在这里看来没有任何问题,但是在其它过程中改变finger_selecte^的时候就出现异常错误,请问这是什么原因,请大家帮忙,就只有40分了,全部奉上,多谢!!!

解决方案 »

  1.   

    如果使用指针就需要给指针分配空间,否则并没有你想的那样到处都是空间给你用procedure finger_click(aimage: TImage; finger_name: string; finger: PInteger); //手指单击过程
    begin
      finger_selected := finger; //指针指向变量地址
    end;//....
    var
      I: Integer;
    begin
      finger_click(Image1, '路过', @I);
      ShowMessage(IntToStr(I));
    end;
      

  2.   

    这个问题需要用指针解决吗?
    我认为简单数据类型Integer就行了