![]() |
|
![]() ![]() ![]() |
|
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Ну, потрясающе простая программочка. Просто я подумал, вдруг кому-нить надо будет засечь определенное время, сидя за компом. Вот и пригодится такая программочка. Она довольно проста, правда, объем кода сильно возрос из-за разных проверок...
В общем, что программа делает. Все предельно просто. Вы вводите количество часов, минут, секунд и давите "Начать". Когда время закончится, программа скажет об этом. Особенности: 1. Учтена проверка на введение только цифр 2. Учтены проверки на пустоту, на нулевые значения, на отрицательные значения 3 (!) Если вводится количество секунд/минут больше 60, то это значение автоматически преобразуется в минуты (если секунд >60) или в часы (это если минут >60). Это, пожалуй, самое интересное в программе. Вот и все! Качайте, и плиз скажите, понравилось аль нет. Вот ссыль: http://my-projects.narod.ru/timer.rar |
|||
|
||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
Молодец... это первое, что я проверяю, дабы запороть всё ![]() Хм, оригинально... Так, насчёт самой програмы... Как мне кажется, от забрасывания юзера ошибками лучше уйти... т.е. если оставили какое-то поле пустым, то автоматом туда ставить 0 и запускать таймер. Для начала изучения BCB оригинально (Мне кажется что это именно так...) ![]() -------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
ОК, сейчас сделаю. Плюс добавлю возможность свернуть в трей, чтобы глаза не мозолил. |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Так. Возможность трея добавил (не пропустите маленькую кнопочку в правом нижнем углу окна программы
![]() Убирание сообщения об ошибке делать не стал, чтобы не утяжелять программу лишними 20 строчками кода. Вот ссыль на следующую версию: ![]() |
|||
|
||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
Хм, работает, однако размер exe и так, мягко говоря, не маленький. Как мне кажется, что-то ты не так пишешь, либо пишешь много не нужного, так как я уверен, что в разы меньше могу размер сделать.
-------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
У меня все вышло примерно в 120 строчек. Нет, я не сомневаюсь, что ВЫ можете сделать намного проще.
![]() А там очень много кода на разные проверки. Вот смотрите, что я включил в код, и оцените, сколько на это надо строк кода: 1. Запрет ввода всех символов кроме цифр (0-9). 2. События при нажатии на кнопку "Сброс времени". 3. События при нажатии на "Стоп" - в 2 и 3 пунктах идет отключение/включение кнопок/полей, что несет 12 строк кода. 4. Проверка на пустоту полей. 5. Перевод слишком больших значений секунд/минут в соответственно минуты/часы. 6. Дописывание "нулика" в метку. 7. Проверка на отрицательные значения. 8. Проверка на нулевые значения. 9. События на запуск таймера. 10. Собственно работа таймера, состоящая из 45 строчек кода, включающих в себя проверку на нулики перед числами из 1 цифры, остановку вовремя, исключение возможности пойти "в минус". Вот это примерно все. Вот и посчитайте, сколько на это все надо угрохать. ![]() Добавлено @ 17:20 Вообще, если хотите, я выложу тут код программы, мне не жалко. Можно ее заодно и разобрать, если вы позволите... Я, в общем, код выложу, если нельзя, то удалите его плиз.
Это сообщение отредактировал(а) sim7 - 23.1.2006, 19:11 |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Так-с, люди. Выпустил версию 1.3. Что нового:
1. Немножко подправлен код (сокращен на 5-6 строчек). 2. Добавлена фича: если програ была в трее, то когда отсчет времени заканчивается, то окно программы из трея вылезает, вызывает сообщение + запускает звуковое оповещение. ![]() Для успешной работы программы нужно просто распаковать архив в ОДНУ папку. В архиве сам таймер + звуковой файл. Его не переименовывать и не перемещать! Иначе оповещения звуком вы не получите. ![]() Вот ссыль: http://my-projects.narod.ru/timer1.3.rar |
|||
|
||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
Да уж, сам миллион раз сталкивался... геморная штука... Нанде ? (Зачем по-японски) Можно и не с большой буквы ![]() Конечно, можно... открытый исходный код это здорово ![]() Часто повторяющиеся действия можно объединить в процедуры... -------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Только в функции. ![]() ![]() ![]() ![]() Это сообщение отредактировал(а) sim7 - 23.1.2006, 21:05 |
|||
|
||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
Не выпендривайся ![]() ![]() Это сообщение отредактировал(а) Spawn™Production® - 23.1.2006, 21:56 -------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
Guedda |
|
|||
![]() Подрывник ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3137 Регистрация: 27.12.2005 Где: Ростов-на-Дону Репутация: нет Всего: 78 |
Начал работать с временем?
Ну, вот задание, если хошь: Пользователь вводит дату, время: Программа берет и считает, сколько секунд осталось до этой даты. За сколько времени справишься? -------------------- Ll 2 |
|||
|
||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
минут за 20 ![]() Функции CompareTime, CompareDateTime и CompareDate. -------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Хм. Я не начал работать со временем.
![]() ![]() Spawn™Production®, впервые слышу про такие функции. ![]() Сейчас выложу следующую версию таймера. Теперь в нем таймер + секундомер. ![]() ![]() Вот линк: http://my-projects.narod.ru/timer1.4.rar |
|||
|
||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
Читаем документацию и радуемся жизни. правильно думаешь.
Системным таймером придётся пользоваться... Добавлено @ 19:08 И действительно, нужно делать с долями секунд, так как иначе смысла от такого секундомера ноль... -------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Это, наверное, сложно? Тогда пока я ограничусь точностью до секунд. Так что пока ничего нового в качестве улучшения не придумаю, новых версий не будет. ![]() Добавлено @ 19:11
Оно понятно. ![]() |
||||
|
|||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
ну если потом пойти, например, в сторону нескольких событий, напоминалки, и вообще органайзера, то кто его знает ![]() -------------------- qqq |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Тогда лучше сделать наоборот - довести этот таймер до ума, а уж потом встроить его в мой проект "Ежедневник" (тут где-то темка с ним еще есть, я потом туда воткну ссыль на него). Вот так можно сделать.
![]() |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: нет Всего: 67 |
а какие проблемы
![]() помоему в стандартном компоненте vcl у TTimer минимальное значение свойства interval == 30 ms -------------------- СУВ, Partizan. |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Ну! А я говорю, что он отстает по времени. Неправильно работает, короче. Не "ритмично". Вот и мучаюсь.
|
|||
|
||||
Бегемот |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 26.1.2005 Где: На границе Европы и Азии Репутация: нет Всего: 3 |
sim7,вот тебе ещё повод подумать!
1. При установке времени отсчёта сделать переход по полям ввода с помощью стрелок! Причём, при переходе содержимое поля должно выделяться! Сделать это того, что бы, если вдруг решил подкорректировать, то не надо было бы беспокоить мышонка или гнать фокус через все компоненты! 2. Начинать отсчёт после ввода времени по нажатию Enter. Т.е если в поле “секунды” нажали Enter – начинаем отсчёт! Опять же для удобства! 3. Можно добавить к твоему таймеру возможность выключать комп! Будет очень полезно для тех, кто засыпает в обнимку с клавой! Ну, чего-то типа выбора, разбудить хозяина, крикнув из динамика что-нибудь ласковое, или же спокойненько выключить компьютер, не нарушая его сна. 4. Ну, и хотя бы десятые доли секунды в секундомере сделать просто необходимо! Удачи! ![]() |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Бегемот, пунктики 1-2 подумаю. 3 - понятия не имею, как это сделать. 4 - тоже самое.
![]() |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Так. С Энтером сделал. Таперича при нажатии Энтера в третьем поле (ввод секунд) - запускается таймер.
С пунктом 1 мучаюсь. |
|||
|
||||
Spawn™Production® |
|
||||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
Можно это прикрутить и к другим полям... Если после ввода секунд ты захотел подредактировать минуты или часы и отуда нажал Enter, то также всё должно запуститься. Положи на форму Label1 и Timer1
Можешь пока не спешить... Впринципе, Windows98 выключается простой API функцией ExitWindows, а вот с XP дело хуже, там чтобы выключить, нужны привелегии... а с токенами работать сдохнешь ![]() Я по жизии, в каком бы языке не сталкивался, использовал готовый код. -------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
||||
|
|||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Так-с. Сделал некоторые изменения. Что нового:
1. Обеспечен переход стрелочками из любого Edit'а в соседний. 2. По нажатию Enter'а на любом Edit'е запускается таймер. 3. При ошибке (ошибок две: пустые поля или нулевые значения во всех трех Edit'ах) выводится сообщение (это уже было) + устанавливается фокус в Edit1 (где устанавливаются часы). Вот это все нововведения пока. С секундомером пока не получается. Работаю. Ссыль: http://my-projects.narod.ru/timer1.5.rar |
|||
|
||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
можно глянуть пост прямо над твоим ![]() Я бы сделал проверку в событии Change: Если какое-либо поле пустует, то кнопка запуска не работает... -------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
УРРРАААААААААА!!!!!!! Я прямо весь в эмоциях! Секундомер работает, чтоб его!
![]() ![]() ![]() ![]() Здорово! Spawn™Production®, ваш код только подал мне идею. ![]() ![]() Но одна проблема осталась. Подскажите, почему при работе секундомера, связанного с системным временем, сама метка (которая и показывает числовое значение часов/минут/секунд/миллисекунд) подергивается? И как это убрать, а то очень раздражает! Вот код собственно события OnTimer секундомера:
Вот. Прошу пока не обращать внимания на не совсем корректную работу этого кода. Помогите плиз с вышезаданным вопросом про моргание. |
|||
|
||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
Думаю придётся в раздел Boland'а лезть...
Проблема с миганием во всех языках, и, как мне кажется, от неё нет панацеи. Мигает потому, что каждую миллисекунду идёт перерисовка контрола. Перерисовывается он несколько дольше, так что сам понимаешь. -------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Ладно, тогда эту проблему отставили. Сейчас малец доделаю и выложу предварительную версию с "наполовину" работающим секундомером и списком нововведений.
|
|||
|
||||
Бегемот |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 26.1.2005 Где: На границе Европы и Азии Репутация: нет Всего: 3 |
sim7!
Можно ли избавиться от мерцания Label’а я не знаю, а вот отучить от этой дурной привычки компонент имеющий Canvas можно! У той же формы есть канва, поэтому отображать работу секундомера без мерцания можно прямо на ней! Для этого тебе придётся кое-что добавить, и кое-что изменить. Если в вкратце, то смысл такой: выводим текст на невидимой области, после чего копируем его на форму методом CopyRect! И всё! В header-файле (Unit1.h) в секции private объяви глобальные переменные!
В Unit1.cpp на FormCreate добавь следующий код:
В обработчике события OnTimer вместо строки, в которой ты выводишь в Label, вставь следующий код:
Ну, и при закрытии формы...
|
||||||||||
|
|||||||||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Ох, друзья, да подождите вы меня незнакомым кодом заваливать...
![]() |
|||
|
||||
mr.Anderson |
|
||||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
Так. Готова новая версия, 1.7. Что нового:
1. Полноценный секундомер. Точность до тысячных долей секунды. Думаю, этого хватит. ![]() 2. Добавлена возможность выключения компа по окончании отсчета только для систем Windows 98. Для ХР я почитал хелп - там столько кода писать надо, что я сразу отказался от этой затеи. Так что пользователям не-Windows 98 систем придется обойтись без этой фичи. ![]() ![]() 3. Секундомер можно запустить, если у вас выделен радиобатон "Секундомер". Просто когда фокусировка на этом радиобатоне, жмите Энтер, и секундомер запустится. Ох, уж и не помню, чего ж еще там новенького... Столько работы на секундомер ушло, что и забыл уже, чего же я там делал нового... 4. Исправлены разные мелкие баги, типа некорректной работы свойства Enabled и прочих у разных объектов. Ну, вот, вроде, и все, что есть нового. Основным новшеством, конечно, является секундомер. У него реализованы возможности остановить/сброс и + возможность пауза/продолжить. Полезная фича, правда? ![]() Вот, пожалуй, и все. Вот ссыль: http://my-projects.narod.ru/timer1.7.zip . Добавлено @ 17:16 Код, к сожалению, выложить не получилось - у вас на форуме длина сообщения ограничена. А код в эту длину не влезает. Добавлено @ 17:17 Попробую разбить код на части:
Добавлено @ 17:17
Добавлено @ 17:18 Получилось! ![]() Добавлено @ 17:19 Да, и еще: я не стал исправлять неверную кодировку (у Билдера кодировка не та, что на форуме), посему плиз не ругайтесь за белеберду вместо русских надписей в коде. Добавлено @ 17:20 И еще вот код немного измененного заголовочного файла:
|
||||||
|
|||||||
Spawn™Production® |
|
|||
![]() Тестер ПО, VB.NET Developer ![]() ![]() Профиль Группа: Участник Сообщений: 398 Регистрация: 12.4.2005 Где: Зеленоград Репутация: 6 Всего: 12 |
sim7, лучше не код пиши, а сами исходники запакуй в архив и выкладывай
-------------------- ОС: WinXP SP2 Rus Frameworks: v1.0.3705, v1.1.4322, v2.0.50215, v2.0.50727 Сам кодю на VB (6.0 (почти забросил), 7.1, 8.0) |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 6 Всего: 128 |
ОК, сейчас сделаю.
Таймер-то протестировали? ![]() Добавлено @ 20:43 Вот ссыль на исходники (приблизительно 800 килобайт, почему так много, не знаю): http://my-projects.narod.ru/timer_basecode.zip |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Тестирование программ" | |
|
Правила должны соблюдаться всеми без исключения.
Для тех, кто создаёт темы: В данном разделе запрещается размещать программы, которые в той или иной степени могут принести вред потенциальному тестеру программы (например, трояны, вирусы и т.д.)
Для тех, кто тестирует: Описывая результаты тестирования программы, указывайте тип и версию ОС, а также характеристики компьютера и прочую информацию, которая может повлиять на работоспособность. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.Anderson. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разное тестирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |