Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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 | ||
а че за ошибка? |
Автор: 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 |
Я не соглашусь с этим. Пробема 1: Изменив название переменной во втором случае Вы не избавитесь от первой переменной, а я смотрю, что память выделяется под нее. Решение 1: Попробуй не объявлять переменную второй раз. Проблема 2: Если решил проблему 1, то возникает чувство ненужных действий. Для переменной уже выделена память и там хранятся данные нужные. Решение 2: Попробуй не переписывать присваивание переменной значений заного. Итог: В первом случае используй весь свой код, который у тебя успешно с самого сначала работал. В каждом последующем случае просто вызывай твой SendInput(2,inp,sizeof(INPUT)); - должно работать коректно. |