Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Ошибка в программе, помогите!


Автор: Vikelf 16.5.2009, 12:07
Доброго времени суток уважаемые форумчане. Пишу программу на С++ в среде Borland C++ Builder 6.0, программа с работой мыши. Столкнулся с ошибкой которую не смог обойти. Помогите пожалуйста.
Вот структура программы:

Требуется:
При нажатии на кнопку:
1)Включается таймер, идёт время, скажем секунд 10 (Здесь вроде проблем нету, да и пример использования таймера у меня есть)
2)По истечении времени таймера, переместить курсор в точку с координатами (х;у)
(Здесь тоже всё гладко: вот код перемещения курсора:

SetCursorPos(X,Y);

проверял, работает)
3)Нажать в этой же точке на левую кнопку мыши (Здесь тоже пока нормально, вот код:

INPUT inp[2];
memset(inp,0,sizeof(inp));
inp[0].type=INPUT_MOUSE;
inp[0].mi.dwFlags=MOUSEEVENTF_LEFTDOWN;
inp[1].type=INPUT_MOUSE;
inp[1].mi.dwFlags=MOUSEEVENTF_LEFTUP;
SendInput(2,inp,sizeof(INPUT));

проверял, работает)
4)Переместить курсор в следующую точку с координатами (х1;у1) (Здесь аналогично первому перемещению)
5)снова нажать на левую кнопку мыши (А вот тут то и начинаются проблемы, при повторном использовании кода указанного выше, компилятор выдаёт ошибку, почему не знаю)
6)Переместить курсор в следующую точку с координатами (х2;у2)
7)Нажать на левую кнопку мыши скажем 5 раз, с интервалом в 1 сек.(это я ещё даже не брался делать, из за этой ошибки, но очень нужно)
8)Вывести на экран "Программа выполнена"

Вот такая программа, и вот такая ошибка.
Ответы и предложения (по мимо форума) так же можно скидывать на мыло: [email protected]
или в асю: 470-616-685
Заранее всем благодарен.

Автор: Dmi3ev 16.5.2009, 15:24
Цитата

5)снова нажать на левую кнопку мыши (А вот тут то и начинаются проблемы, при повторном использовании кода указанного выше, компилятор выдаёт ошибку, почему не знаю)

а че за ошибка?

Автор: Vikelf 17.5.2009, 07:45
Вот коды ошибок, при повторном использовании моего кода:

[C++ Ошибка] Unit1.cpp(27): E2238 Multiple declaration for 'inp'
[C++ Ошибка] Unit1.cpp(20): E2344 Earlier declaration of 'inp'

Просто дважды использую код, а компилятор ошибку видит, при одном использовании не видит.

Добавлено через 10 минут и 21 секунду
Тема закрыта, нужно просто изменить название переменной

Автор: froex 17.5.2009, 08:48
Цитата(Vikelf @  17.5.2009,  07:45 Найти цитируемый пост)
нужно просто изменить название переменной 

Я не соглашусь с этим.

Пробема 1: Изменив название переменной во втором случае Вы не избавитесь от первой переменной, а я смотрю, что память выделяется под нее.
Решение 1: Попробуй не объявлять переменную второй раз.

Проблема 2: Если решил проблему 1, то возникает чувство ненужных действий. Для переменной уже выделена память и там хранятся данные нужные.
Решение 2: Попробуй не переписывать присваивание переменной значений заного.

Итог:
В первом случае используй весь свой код, который у тебя успешно с самого сначала работал. В каждом последующем случае просто вызывай твой SendInput(2,inp,sizeof(INPUT)); - должно работать коректно.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)