Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Временной таймер
EagleSHДата: Вторник, 14 Июля 2009, 18:18 | Сообщение # 1
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
подскажите господа правильную и умную реализацию таймера, идущего с положительного времени до 0 и уходящего в отрицательное.

к примеру на входе в скрипт имеем timer$='01:10' (минута и 10 секнд)
чтоб при достижении нуля автоматом было -00:59, -01:23 и так далее

Code

       min$=StrCopy(timer$,1,2)
       sec$=StrCopy(timer$,4,5)
       min=VAL(min$)
       sec=VAL(sec$)
       If (min=0 & sec=0) Then
         Message ("пошёл минус","")
       Else
         sec=sec-1
         If (sec<0) Then
           sec=59
           min=min-1
         Else
         End
         If (min<10) Then
           min$='0'+CHAR(min)
         Else
           min$=CHAR(min)
         End
         If (sec<10) Then
           sec$='0'+CHAR(sec)
         Else
           sec$=CHAR(sec)
         End
         timer$=min$+':'+sec$

на выходе из скрипта timer$ должен изменится на одну секунду

в конце скрипта естественно ставим ScriptTimer("timer","1000")

Сообщение отредактировал EagleSH - Вторник, 14 Июля 2009, 18:20
 
Alex3AДата: Вторник, 14 Июля 2009, 18:39 | Сообщение # 2
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Ты знаеш что такое смещение?
Любой диапазон чисел можно сместить в любю сторону.
100-50=50
90-50=40
50-50=0
40-50=-10
1-50=-49
 
EagleSHДата: Вторник, 14 Июля 2009, 18:45 | Сообщение # 3
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
Alex3A, знаю, но шото туплю, не поправишь код? redface
 
toizyДата: Вторник, 14 Июля 2009, 18:51 | Сообщение # 4
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Всё очень просто
Прикрепления: 3937484.7z (0.8 Kb)


Жизнь оказалась не такой уж и забавной, как поначалу...
 
EagleSHДата: Вторник, 14 Июля 2009, 18:55 | Сообщение # 5
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
toizy, спасибо дружище! то что нужно и красиво написано!

походу спрошу, я так понял в ммб нельзя остановить скрипт? RunScript("timer")

и остановить этот таймеровый скрипт.... в хелпе не нашёл. обычно делал через переменные, если не нужно выполнение скрипта, вешал флаг на него.

 
toizyДата: Вторник, 14 Июля 2009, 19:13 | Сообщение # 6
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Да, вешать флаг

Добавлено (14 Июль 2009, 19:13)
---------------------------------------------

Quote (EagleSH)
и красиво написано!

Можно ещё красивей, кстати :)


Жизнь оказалась не такой уж и забавной, как поначалу...
 
EagleSHДата: Вторник, 14 Июля 2009, 19:27 | Сообщение # 7
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
toizy, хотелось бы увидеть :)
только просьба, подправь так, чтоб к примеру:

скрипт в кнопке:

Code
time$ = '01:10'
RunScript("Script")

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

а твой код красивее и с минусом ок всё :)

 
toizyДата: Вторник, 14 Июля 2009, 19:48 | Сообщение # 8
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (EagleSH)
подправь так, чтоб к примеру:

это никак не поместить в скрипт с таймером. Должно быть отдельно. Лучше ты переделай свой код так, чтобы это не имело значения :)


Жизнь оказалась не такой уж и забавной, как поначалу...
 
EagleSHДата: Вторник, 14 Июля 2009, 20:49 | Сообщение # 9
Поднаторевший
Группа: Проверенные
Сообщений: 106
Репутация: 0
Награды: 0
Статус: Offline
toizy, всётаки доработал свой код, работает как часы :D
Code

readtime$='01:10'
minus$=StrCopy(readtime$,1,1)
If (minus$='-') Then
      min$=StrCopy(readtime$,2,3)
      sec$=StrCopy(readtime$,5,6)
      min=VAL(min$)
      sec=VAL(sec$)
      sec=sec+1
      If (sec>59) Then
        sec=0
        min=min+1
      End
      If (min<10) Then
        min$='0'+CHAR(min)
      Else
        min$=CHAR(min)
      End
      If (sec<10) Then
        sec$='0'+CHAR(sec)
      Else
        sec$=CHAR(sec)
      End
      readtime$='-'+min$+':'+sec$
Else
      min$=StrCopy(readt ime$,1 ,2)
      sec$=StrCopy(readtime$,4,5)
      min=VAL(min$)
      sec=VAL(sec$)
      If (min=0 & sec=0) Then
        readtime$='-00:01'
      Else
        sec=sec-1
        If (sec<0) Then
          sec=59
          min=min-1
        End
        If (min<10) Then
          min$='0'+CHAR(min)
        Else
          min$=CHAR(min)
        End
        If (sec<10) Then
          sec$='0'+CHAR(sec)
        Else
          sec$=CHAR(sec)
        End
        readtime$=min$+':'+sec$
      End
End


Сообщение отредактировал EagleSH - Вторник, 14 Июля 2009, 20:51
 
toizyДата: Вторник, 14 Июля 2009, 20:53 | Сообщение # 10
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Слишком длинный и нуждается в оптимизации :)

Добавлено (14 Июль 2009, 20:53)
---------------------------------------------
В частности, ветвление можно выкинуть, ибо не нужно


Жизнь оказалась не такой уж и забавной, как поначалу...
 
  • Страница 1 из 1
  • 1
Поиск: