Вверх ↑
Этот топик читают: Гость
Ответов: 24
Рейтинг: 4
#16: 2012-12-03 23:18:45 ЛС | профиль | цитата
Сильно смахивает на попытку сделать защиту по времени использования ПО

nesco, я сторонник открытого ПО )) нужно в течении определенного времени что-то сделать, без возможности обмануть таймер.
В IC это можно сделать несколькими строчками, используя QueryPerformanceCounter
- к сожалению я не владею IC.
Леонид, спасибо, по моему то что надо. Но я совершенно не понял как это работает, и еще вопрос, а оно будет точно работать (секунды при длительном времени набегать не будут)?
карма: 1

0
Ответов: 1536
Рейтинг: 176
#17: 2012-12-03 23:18:53 ЛС | профиль | цитата
fooger писал(а):
скажите как его можно улучшить/оптимизировать

Add(MainForm,14298287,161,336)
{
Position=1
}
Add(Label,10498014,490,399)
{
Left=160
Top=15
Width=74
Height=24
Font=[MS Sans Serif,12,1,0,1]
Caption="00:00:00"
}
Add(Label,2908878,105,245)
{
Left=5
Top=55
Width=100
Caption="Время в минутах"
link(onClick,7940068:doText,[])
}
Add(Edit,7940068,161,245)
{
Left=105
Top=50
Text="100"
}
Add(Button,3371336,98,294)
{
Left=165
Top=45
Width=105
Height=25
Caption="Старт"
link(onClick,5562367:doData,[])
}
Add(DoData,5562367,161,294)
{
link(onEventData,12412637:doEvent1,[])
link(Data,7940068:Text,[])
}
Add(Math,12237701,259,301)
{
OpType=8
Op2=60
ResultType=0
link(onResult,9236875:doValue,[(494,307)(494,349)])
}
Add(MMTimer,14105171,266,350)
{
Resolution=0
Enable=1
link(onTimer,6152764:doEvent1,[])
}
Add(Hub,12412637,217,294)
{
OutCount=3
link(onEvent1,15143220:doOperation,[])
link(onEvent2,12237701:doOperation,[])
link(onEvent3,14105171:doTimer,[(249,314)(249,356)])
}
Add(Math,15143220,322,294)
{
OpType=3
Op2=60
ResultType=0
link(onResult,10750133:doEvent1,[])
}
Add(FormatStr,238643,441,399)
{
DataCount=3
Mask="%3:%2:%1"
link(onFString,10498014:doText,[])
link(Str1,13093047:Value,[])
link(Str2,7477155:Value,[(454,383)(608,383)])
link(Str3,10596378:Value,[(461,390)(776,390)])
}
Add(Hub,6312818,735,392)
{
link(onEvent1,14105171:doStop,[(819,398)(819,449)(251,449)(251,363)])
link(onEvent2,4929770:doMessage,[])
}
Add(Message,4929770,777,399)
{
Message=" Время вышло"
}
Add(Convertor,6801148,399,343)
{
SymbolFill="0"
link(onResult,13093047:doValue,[])
}
Add(Memory,13093047,441,343)
{
}
Add(Convertor,7621248,560,336)
{
SymbolFill="0"
link(onResult,7477155:doValue,[])
}
Add(Memory,7477155,602,336)
{
}
Add(CounterEx,6443386,350,343)
{
Max=59
Point(doPrev)
Point(onThroughMin)
link(onNext,6801148:doConvert,[])
link(onThroughMin,9236875:doPrev,[])
}
Add(CounterEx,9236875,511,336)
{
Max=59
Point(onThroughMin)
Point(doValue)
Point(doPrev)
link(onNext,7621248:doConvert,[])
link(onThroughMin,4980231:doPrev,[])
}
Add(Convertor,12333829,728,329)
{
SymbolFill="0"
link(onResult,10596378:doValue,[])
}
Add(Memory,10596378,770,329)
{
}
Add(CounterEx,4980231,665,329)
{
Max=23
Point(doValue)
Point(doPrev)
Point(onThroughMin)
link(onNext,6651857:doWork2,[])
link(onThroughMin,6312818:doEvent1,[(716,342)(716,398)])
}
Add(Hub,6152764,315,350)
{
link(onEvent1,6443386:doPrev,[])
link(onEvent2,238643:doString,[(341,363)(341,405)])
}
Add(Hub,10750133,616,294)
{
link(onEvent1,6651857:doWork1,[(711,300)])
link(onEvent2,4980231:doValue,[(648,307)(648,342)])
}
Add(HubEx,6651857,707,329)
{
link(onEvent,12333829:doConvert,[])
}

карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 8930
Рейтинг: 823
#18: 2012-12-03 23:21:10 ЛС | профиль | цитата
fooger, секунды не будут набегать и изменяться от системного времени.
карма: 19

1
Голосовали:fooger
Разработчик
Ответов: 26164
Рейтинг: 2127
#19: 2012-12-03 23:24:34 ЛС | профиль | цитата
fooger писал(а):
нужно в течении определенного времени что-то сделать

И сколько это время -- час, два, три, десять, неделя, месяц Схема Леонид-а будет работать только пока работает программа, у него нет накопления результата, а TimeCounter считает только текущие тики, хотя и построен на функции QueryPerformanceCounter
карма: 22

0
Ответов: 24
Рейтинг: 4
#20: 2012-12-03 23:28:43 ЛС | профиль | цитата
nesco, это должно определятся в настройках, в среднем около часа.
ser_davkin, спасибо, но у меня нет дополнительных компонентов (где их скачать?)
Леонид, огромное Вам спасибо, буду использовать Ваше решение, только вот бы еще понять как оно работает...
карма: 1

0
Ответов: 1536
Рейтинг: 176
#21: 2012-12-03 23:33:59 ЛС | профиль | цитата
fooger, соседняя тема Alternative build HiAsm или смотри SVNSVN-Hihelp
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 24
Рейтинг: 4
#22: 2012-12-03 23:35:15 ЛС | профиль | цитата
nesco,
Схема Леонид-а будет работать только пока работает программа
, а когда она еще может работать, например выключить программу, затем включить и таймер дальше продолжает работать?
у него нет накопления результата
- а куда оно должно накапливать?
карма: 1

0
Разработчик
Ответов: 26164
Рейтинг: 2127
#23: 2012-12-03 23:42:48 ЛС | профиль | цитата
fooger писал(а):
затем включить и таймер дальше продолжает работать?

Счетчик тиков компа работает всегда, вне зависимости от работы прикладного ПК, там работает аппаратный таймер самого ПК, пока комп включен, и функция QueryPerformanceCounter просто получает значение этого счетчика тиков. Те, пока комп работает можно вести отсчет независимо от работы своего ПО.
fooger писал(а):
а куда оно должно накапливать?

Предположим, в реестр
Но при таком раскладе работы
fooger писал(а):
в среднем около часа

заморочки с накоплением результата не имеют никакго смысла
карма: 22

1
Голосовали:fooger
Ответов: 1536
Рейтинг: 176
#24: 2012-12-04 00:01:41 ЛС | профиль | цитата
[flood]nesco, тему надо в "Между делом" отправить. И удали два последних поста, для чистоты.[/flood]
карма: 1
Не так страшна ошибка, как опасность её не заметить.

0
Ответов: 24
Рейтинг: 4
#25: 2012-12-04 00:03:38 ЛС | профиль | цитата
и исправить опечатку "Незавсисимый " ))
Имхо, но независисмый таймер, это лучший таймер
карма: 1

0
25
Сообщение
...
Прикрепленные файлы
(файлы не залиты)