Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
.NET 4.x

Контроль ввода времени

25.06.2015, 20:44. Показов 2745. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть такой вот вопрос.
От пользователя требуется ввести интервалы времени HH:MM:SS в поле. Причем нужно сделать защиту от "дурака", но я думаю тут понятно о чем идет речь, а если нет:
1) нужно запретить юзеру затрагивать символы ":"
2) если юзер введет одну цифру и пойдет "мышкоблудить" дальше, то правильно обработать это либо дописав ноль после цифры, либо сделав это перед цифрой
3) естественно что в поле секунд максимальное значение может быть только 59 но никак не 60 или 99, то же самое касается поля минут, но не касается поля количества часов, там пусть будет 99 макс. значение
4) само собой, запретить ввод букв, символов, знаков пунктуации и так далее - только цифры 0-9

Кроме правильной подготовки полей для ввода времени мне нужно будет еще выполнять операции с этим временем: сложение и вычитание...

Ну и теперь вот возникает такая дилемма... Либо писать/делать это все руками убив на это полдня (от одной только мысли о написании вручную у меня начинается нервный тик), либо может есть уже какие-то готовые решения по грамотному снятию этих данных с неграмотного юзера и поморочиться придется только с вычислениями над этим временем... Ну или может быть бейсик умеет сам грамотно работать с операциями над временем, плюсовать, вычитать?

Спасибо за помощь.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.06.2015, 20:44
Ответы с готовыми решениями:

Контроль ввода данных
Такой простенький код. Как можно сделать так, чтобы при вводе букв или символов для одной из переменных - программа не вылетала?Спасибо! ...

Калькулятор: контроль ввода данных
Делаю калькулятор формат Form1.vb нужна помощь . Как сделать чтоб с клавиатуры нельзя было вводить текст , а только цифры.!

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода времени
5.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода времени.

16
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
25.06.2015, 20:58
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Stass48, все придумано:
Вам нужен компонент DateTimePicker
У него есть свойство Format. По умолчанию оно равно Long. Поставьте Time

Чтобы работать с вычислениями, касающимися дат и времени, почитайте тут https://www.cyberforum.ru/post1932768.html

Например, узнать разницу в минутах:
VB.NET
1
MsgBox(DateDiff(DateInterval.Minute, DateTimePicker1.Value, DateTimePicker2.Value))
3
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
27.06.2015, 23:26  [ТС]
Спасибо конечно. Но:
1) Как убрать кнопку с календарем?
2) Разве может быть там 99 часов? Разве там не 24-часовой формат? Мне не нужна дата вообще мне нужно только время.

Да и конечно хотелось бы иметь возможность обрабатывать больше 99 часов, чтобы уж наверняка...
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
27.06.2015, 23:40
Недочитал, что нужно вводить 99 часов, пардон.
Сейчас уже нет времени с этим разбираться.
0
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
28.06.2015, 00:00  [ТС]
Ну может есть какие-то другие варианты? Я ведь образно говорил.. 99... Может и не нужно оно вовсе... Может быть проще использовать количество дней (сутки)...

Мне вообще этот контрол нужен только для ввода интервала. Сомневаюсь, что кому-то придется вводить интервал больше 24 часов.. Так что на это думаю можно забить...

Как убрать ту дурацкую кнопку с календарем?

Добавлено через 4 минуты
Что касается 99 часов, то это касается больше операций со временем, чем со вводом... Но в таком случае, мне кажется что лучше использовать дни/месяцы/годы... не для сдравого смысла, а для некой "правильности" что ли...
Но наверное это уже не касается данного контрола.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.06.2015, 00:01
А что Вы изобретаете?
0
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
28.06.2015, 00:09  [ТС]
Программа, которая будет формировать рекламный блок (по сути плейлист) из видеофайлов.
Есть у нас куча видеофайлов типа как основной набор видео.

В этот набор нужно вклинить еще несколько видеофайлов с различными интервалами.
Если случается так, что интервал вставляемого видео указан 10 минут, а видеофайлы в наборе позволяют вклинить видос вне этих 10 минут, ну например получается либо 8 минут, либо 12, то данный 4-х минутный видос из набора нужно обрезать. Но есть еще параметр допуска, например если набор заканчивается либо через 10 минут 30 секунд, либо через 9 минут 30 секунд, то данной обрезкой нужно пренебречь и вставить видео уже как получится...

Короче гемор еще тот. Взялся за это потому что деньги нужны, хоть и платят фигню(( Да и программист с меня не сильно хороший. по крайней мере пока что...
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.06.2015, 00:17
В таком случае можете создать три NumericUpDown, у всех установить разный максимум: у первого - побольше, у двух других - 59
0
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
28.06.2015, 00:34  [ТС]
Ну к тому и вернулись что ручками)
Можно и текст-боксами)
Хотя предполагаю, что Ваш вариант несколько лучше. Ладно. Тему пока не закрывайте.
Не буду терять время, лучше займусь этим всем...
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.06.2015, 01:01
Цитата Сообщение от Stass48 Посмотреть сообщение
Можно и текст-боксами)
В текстбоксы можно ввести что попало, в Намерики - нет

Добавлено через 8 минут
По поводу datetimepicker.
Календарь убрать можно, но останется элемент "стрелочки"
Свойство ShowUpDown ставим в True
0
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
28.06.2015, 03:20  [ТС]
Да, эта штука определенно круче)

Что касается расчетов.. Все гениальное - просто)
Идиот как только раньше не допер: что мне мешает перевести минуты в секунды и часы в секунды и потом суммировать это все? Получив секунды, делай с ними что хочешь... Конвертнуть обратно тоже не такая большая проблема)
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.06.2015, 12:42
Цитата Сообщение от Stass48 Посмотреть сообщение
Конвертнуть обратно тоже не такая большая проблема)
Вообще не проблема
VB.NET
1
2
3
        Dim DT As New DateTime
        DT = DT.AddSeconds(656)
        MsgBox(DT.TimeOfDay.ToString)
656 секунд конвертируются в 00:10:56
1
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
29.06.2015, 16:28  [ТС]
Хм.. Круто блин!)
А можно так же только наоборот? С 00:10:56 получить 656? А то блин когда нумериков три то не сложно минуты умножить на 60 и часы два раза на 60, потом суммировать... Вот когда имеешь строку вида как раз как у Вас 00:10:56 то уже нужно мудохаться... А мне как раз нужно такую строку получить в секундах.
Но опять таки скорее всего с 99 часами в предложенном Вами методе возникнут проблемы.

Добавлено через 1 минуту
Вообще проблема в том, что я не знаю как будет выводить ffprobe.exe длительность видео! То ли в формате с 99 часами, то ли может быть он напишет что-то вроде 1 день, столько то часов:минут:секунд.

Добавлено через 3 минуты
Понимаю уже что дибилизм и вообще врядли кто-то будет засовывать туда видео длительностью больше 23 часов 59 минут.. Но все же...
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
29.06.2015, 16:30
Цитата Сообщение от Stass48 Посмотреть сообщение
А можно так же только наоборот
VB.NET
1
2
        Dim Dt As DateTime = "00:01:15"
        MsgBox(Dt.TimeOfDay.TotalSeconds)
Цитата Сообщение от Stass48 Посмотреть сообщение
скорее всего с 99 часами в предложенном Вами методе возникнут проблемы
Возникнут, но можно прибавить часы из намериков

VB.NET
1
2
3
4
5
        Dim Dt As DateTime
        Dt = Dt.AddHours(999)
        Dt = Dt.AddMinutes(15)
        Dt = Dt.AddSeconds(10)
        MsgBox(Dt.TimeOfDay.TotalSeconds)
1
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
29.06.2015, 16:51  [ТС]
Не, дело уже не в намериках... За намерики забудьте, тот модуль я уже реализовал своим методом:

VB.NET
1
2
3
4
'проведение необходимых расчетов:
        file_1_Seconds = Val(S_1.Value) + (Val(M_1.Value) * 60) + (Val(H_1.Value) * 60 * 60)
        file_2_Seconds = Val(S_2.Value) + (Val(M_2.Value) * 60) + (Val(H_2.Value) * 60 * 60)
        file_3_Seconds = Val(S_3.Value) + (Val(M_3.Value) * 60) + (Val(H_3.Value) * 60 * 60)
S_1, H_1, M_1 и так далее - это и есть намерики... Это я уже сделал) Спасибо кстати Вам за то что наставили на путь истинный, с ними получилось все гораздо проще.

Здесь другое: Моя прога пользуется другой - консольной прогой для определения продолжительности видеофайла. Через редиректы stdin, stdout, stderr я ловлю ответ и ищу среди него слово "Duration: " как только нахожу, то беру сразу после этого слова 8 символов. Это и есть вот то 00:00:00. То есть потом я кладу этот текст в переменную типа String. Вот дальше у меня уже стоит задача получить из этой стринг-переменной значение в секундах... Как-то так...
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
29.06.2015, 16:55
Stass48, строку разбить на подстроки можно так
VB.NET
1
Dim Time() As String = "00:00:00".Split(":")
Здесь Time(0) - вернет часы, Time(1) - минуты, Time(2) - секунды.
1
22 / 22 / 7
Регистрация: 26.05.2011
Сообщений: 256
29.06.2015, 17:23  [ТС]
Блин, вот сколько нюансов я не знал... Спасибо Вам огромное! Это то что нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.06.2015, 17:23
Помогаю со студенческими работами здесь

Контроль ввода даты и выдача сообщения в случае ошибки неверного ввода
Здравствуйте! У меня есть такая вот форма(скрин ниже). Смысл в том, что если пользователь введет в дате не дату(а там стоит тип данных -...

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода пароля
4.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода пароля.

Контроль ввода даты в MaskEdit и выдача сообщения в случае ошибки неверного ввода
Всем доброго дня! Использую MaskEdit для ввода даты формат: dd/mm/yyyy Помогите написать обработчик выдачи ошибки в ShowMessage...

Реализовать контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона
1.Реализовать в JavaScript контроль ошибок ввода данных в поле, предназначенное для ввода номера телефона.

Контроль ввода
Всезнающий ALL, подскажи решение: при вводе значения в поле формы требуется сравнить вводимое значение с уже имеющимися ззначениями в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru