...第二个点到时候开始报错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的下标。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com