...第二个点到时候开始报错list index out of bounds下标越界
发布网友
发布时间:2024-10-24 15:08
我来回答
共4个回答
热心网友
时间:2024-11-13 20:15
1、 for i:=1 to CMapXPoints(Points).Count-1 do //应该就是for循环这一片的问题
看一下:CMapXPoints(Points).Count-1 =?
x2:=CMapXPoints(Points).Item[i+1].X;
y2:=CMapXPoints(Points).Item[i+1].Y;
Item[i+1]????
2、既然怀疑在这部分出问题了,你可以试着修改数组相关的变量,或者单行屏蔽程序执行看下到底是哪个出的问题啊
热心网友
时间:2024-11-13 20:10
用以下函数实现^_^(虽然是C++定义写法,但是Delphi定义与之相同)
VOID mouse_event( DWORD dwFlags,
DWORD dx,
DWORD dy,
DWORD dwData,
ULONG_PTR dwExtraInfo
);
参数说明一下:)
dwFlags 指定鼠标的动作,移动或者点击,可有以下参数
MOUSEEVENTF_ABSOLUTE 指定其后参数dx,dy为绝对坐标,否则为相对坐标
MOUSEEVENTF_MOVE 指定移动鼠标
MOUSEEVENTF_LEFTDOWN 指定鼠标左键按下
MOUSEEVENTF_LEFTUP 指定鼠标左键弹起
dx,dy 指定了鼠标的坐标,如果第一个参数有MOUSEEVENTF_ABSOLUTE 则为绝对坐标,否则为相对坐标。
最后两个参数一般设为0,具体解释请参考MSDN或Delphi帮助。
如果需要程序运行时自动点击窗体中某个点,首先需要获取该点的绝对坐标(相对于整个屏幕),一般是将窗体的坐标+上窗体内的坐标。如(50,50)的绝对坐标可能是(Form1.Left+50,Form1.Top+50),此值不一定准确,需要自己修正。
mouse_event(MOUSEEVENTF_LEFTDOWN or MOUSEEVENTF_ABSOLUTE,Form1.Left+50,Form1.Top+50,0,0);
mouse_event(MOUSEEVENTF_LEFTUP or MOUSEEVENTF_ABSOLUTE,Form1.Left+50,Form1.Top+50,0,0);
这样就可以实现模拟鼠标点击的效果。
热心网友
时间:2024-11-13 20:11
比如说我做了个窗体,如果实现程序运行时自动点击窗体中的某个点,如坐标(用以下函数实现^_^(虽然是C 定义写法,但是Delphi定义与之相同) VOID mouse
热心网友
时间:2024-11-13 20:10
-- 根据这个语句 for i:=1 to CMapXPoints(Points).Count-1 do
CMapXPoints(Points).Item的下标应该是从0开始的。
另外取值的时候先判断一下i、i+1是否大于CMapXPoints(Points).Item的下标。