Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/67: Рейтинг темы: голосов - 67, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 184

Секундомер

30.01.2013, 11:45. Показов 12318. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть база для проведения тестов, срок сдачи тестов ограничен временем. Как лучше реализовать отображение времени оставшегося для сдачи теста?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.01.2013, 11:45
Ответы с готовыми решениями:

Секундомер(и только секундомер).
Да,я в гугле рылся,и там всё в усложнённом варианте.Мне нужно только по простому,поскольку я в JS только 2 день.вот я написал,но не...

секундомер C#
Нужно написать секундомер. Изначально сделал секундомер отображающий время с точностью до 1/10 сек. Когда попытался сделать так, чтобы он...

Секундомер
Создаем по центру экрана цифровые часы, показывающие часы, минуты, секунды и милисекунды. Часы запускаются по нажатию одной из клавиш, по...

13
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 200
30.01.2013, 12:21
Два варианта в голову лезут.
1. Агентом каждые 5 минут пробегаться по документам и вычислять оставшееся время
2. Агентом каждые 5 минут в notes.ini перезаписывать текущее время, получать его в столбце вьюшки @Environment("CurrentTime")

Первый, наверное лучше, особенно, если перебирать не все документы, а брать коллекцию только из тех, которые еще не просрочены. Во втором варианте, по-моему надо каждый раз перестраивать индекс вьюшки, хотя могу ошибаться.
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
30.01.2013, 12:36
Если нужно только визуальное отображение на форме то JavaScript должен прекрасно с этим справится.
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
30.01.2013, 12:54
Почитай в хелпе про NotesTimer и пример посмотри.
0
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 364
30.01.2013, 13:03
Цитата Сообщение от Medevic
Почитай в хелпе про NotesTimer и пример посмотри.
+ таймером бери время с сервака так как
у меня были студенты, которые крутили время на компе
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
30.01.2013, 14:14
таймером запускать агент
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
30.01.2013, 17:21
См. тему . Внутри агента можно брать серверное время, допустим раз в 10 секунд.
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 184
04.02.2013, 13:01
А каким образом брать время с сервера? На сколько точный этот NotesTime, у меня с интервалом 1 сек в течение 30 сек опоздал на 5?
0
0 / 0 / 0
Регистрация: 16.07.2007
Сообщений: 849
04.02.2013, 13:48
Serduko
а потому что не надо пользоваться этим таймером для отчета времени, им надо пользоваться для инициализация скрипта который получает серверное время.
получать время можно агентом, например так @Now( flags ; serverNames )
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
04.02.2013, 15:40
Цитата Сообщение от Serduko
А каким образом брать время с сервера?
Поиск что ли перестал работать?
Создайте документ в БД (она на сервере ж находится?) и возьмите дату создания. @Now(flags; serverNames) глючит, об этом писали здесь, ищите.

Добавлено:


Цитата Сообщение от Serduko
На сколько точный этот NotesTime, у меня с интервалом 1 сек в течение 30 сек опоздал на 5?
Это именно "убегание" времени, а не расхождение времени между клиентом и сервером?
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
06.02.2013, 15:49
Serduko
Ещё подумал... Достаточно первый раз создать документ и взять дату и время, а затем просто прибавлять по секунде, т.к. секунда прибавляется, что на клиенте, что на сервере одинаково ;)
Время вперёд убегает потому, что при создании дока UNID генерится на определённую секунду, а если до создаётся в пределах той же секунды, то чтобы UNID для него был уникальным, он рассчитывается по следующей секунде. Об этом было подробно когда-то на форуме Интертраста.
Лучше, чтобы прибавлять >= 1 секунды, тогда время убегать не должно. Но иногда всё-таки будет, т.к. на сервере/клиентах могут работать другие агенты/люди, которые могут в то же время создавать документы.
0
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 364
07.02.2013, 07:09
Цитата Сообщение от Medevic
Почитай в хелпе про NotesTimer и пример посмотри.
to author of post:

еще не забудь при использовании NotesTimer-а
таймер останавливается, если на документе появится диалоговое окно, допустим при открытии свойств дока.
поэтому разумнее будет

1) запомнить серверное время, когда начался тест, и скинуть его в NotesdateTime
2) потом каждый раз NotesTimer-ом получать разницу в секундах между исходным временем и текущем
3) если эти полученные секунды превышают или равны, отведенному времени, автоматом останавливаешь тест.
0
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 205
07.02.2013, 12:27
С сервера время брать не обязательно.
startTic = Getthreadinfo(6) берет "тики" с сотворения мира и они не меняются при изменении времени в операционке.

Декларируйте startTic глобально, вычисляйте его, например, в PostOpen и используйте как опорное.

И потом, лучше использовать JS:
Например на "кнопочках" - в OnLoad нажимаете программно кнопочку MyClock
window.document.forms[0].MyClock.click()
а кнопочка MyClock нажимает саму себя с интервалом в 1сек. {setInterval("window.document.forms[0].MyClock.click()",1000)}, корректирует значение startTic, выводит значение времени в какое-нибудь поле для показа и проверяет не истекло ли время (с соответствующими действиями).

Если хочется в LS, то нажимаем на кнопочку например так:
Dim ws As New NotesUIWorkspace
Call ws.URLOpen( "java script: document.forms[0].MyClock.click();" )
0
0 / 0 / 0
Регистрация: 05.12.2011
Сообщений: 184
10.02.2013, 10:29
Спасибо всем, я реализовал в диалоге, примерно так (конечно код сыроват, все делалось впопыхах, но аттестация прошла успешно, теперь можно спокойно дорабатывать базу):


LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub StartExam(StartForm As NotesDocument)
Dim ws As New NotesUIWorkspace
Dim Qdoc As NotesDocument
Dim Adoc As NotesDocument
Dim NextAdoc As NotesDocument
 
If Len(CStr(SectionDoc.SectionTime(0))) <> 0 Then
If SectionDoc.SectionTime(0) <> 0 Then
MaxTime = SectionDoc.SectionTime(0)
startTime = Now
elapsedTime = CDat(0)
Set elapsedTimer = New NotesTimer(1, "Время сдачи раздела")
On Event Alarm From elapsedTimer Call elapsedTimerHandler
End If
End If
 
Set Qdoc = GetQuestionDoc(0)
If Qdoc Is Nothyng Then Exit Sub
Set Adoc = GetAnswerDoc(Qdoc, "", StartForm.UserUN(0))
NextAnswer:
Adoc.OpenedInDialog = 1
If elapsedTimer.Enabled Then Adoc.TimeLeft = GetRemainingTime
If ws.DialogBox (Adoc.Form(0), True, True, True, False, False, False, "Вопрос №" + CStr(Adoc.QuestionIndex(0)),_
Adoc, False, True) Then
...

LotusScript
1
2
3
4
5
6
7
Function GetRemainingTime As Integer
If elapsedTime = CDat(0) Then
GetRemainingTime = MaxTime
Else
GetRemainingTime = MaxTime - CInt(Format(elapsedTime - startTime,"nn"))
End If
End Function

LotusScript
1
2
3
4
5
Sub elapsedTimerHandler(Source As NotesTimer)
Dim temp As Variant
temp = Evaluate("@Now([ServerTime] : [LocalTimeOnError]; @ServerName)")
elapsedTime = temp(0)
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.02.2013, 10:29
Помогаю со студенческими работами здесь

Секундомер
Подскажите, пожалуйста, чем лучше воспользоваться для написания секундомера?? Чтобы в jLabel выводить... Ну и желательно пример, если...

Секундомер
Пытаюсь написать секундомер, который будет начинать отсчет с нуля. Достаточный период - от нуля до шестидесяти секунд. Логика работы...

Секундомер!
Написать секундомер в нём должно быть 3 лэйбочки и 2 кнопки

Секундомер
Есть семи сегментный светодиодный индикатор, программа считает до 9 и обнуляется, как сделать так чтобы индикатор обнулялся по нажатию...

Секундомер
Ребят помогите пожалуйста с кодом. Сделал часы теперь туда хочу засунуть секундомер но никак не получается вот исходник unit Unit1; ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru