Вверх ↑
Этот топик читают: Гость
Ответов: 35
Рейтинг: 5
#1: 2011-06-06 17:09:49 ЛС | профиль | цитата
Нужно вычислить количество секунд между двумя датами
Примерный код:

Add(MainForm,2953706,21,105)
{
link(onCreate,16762688:doCalc,[])
}
Add(DateDiff,16762688,98,119)
{
link(onCalc,2049250:doText,[])
link(DateTime1,1926797:Value,[])
link(DateTime2,13805098:Value,[(111,107)(146,107)])
}
Add(Memory,1926797,98,63)
{
Default=Real(1011970)
}
Add(Memory,13805098,140,63)
{
Default=Real(6062011)
}
Add(Edit,2049250,161,119)
{
Left=15
Top=15
}

Помогите разобратся как установить нужную дату в формате Real и как вообще использовать этот компонент.
Если можно пример использования.
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#2: 2011-06-06 17:36:56 ЛС | профиль | цитата
code_24318.txt
карма: 0

0
Ответов: 35
Рейтинг: 5
#3: 2011-06-06 18:20:07 ЛС | профиль | цитата
Спасибо. Присвойте теме статус "Решено"

Пример программы изменяющей дату установки Windows: (может кому пригодится)

code_24319.txt
карма: 0

0
файлы: 2code_24317.txt [403B] [94], code_24319.txt [1.8KB] [115]
Ответов: 3889
Рейтинг: 362
#4: 2011-06-06 18:57:48 ЛС | профиль | цитата
KopBuH писал(а):
Пример программы изменяющей дату установки Windows
Беглым взглядом, кажется, так пропроще, нет?

Add(MainForm,382254,252,168)
{
Height=107
Caption="Изменение даты установки Windows"
BorderStyle=1
}
Add(DateDiff,16762688,427,308)
{
link(onCalc,2448422:doRead,[])
link(DateTime2,2504144:DateTime,[])
}
Add(DatePicker,2504144,434,245)
{
Left=120
Top=10
Width=140
Height=21
Point(DateTime)
Point(CurrentDateTime)
}
Add(DoData,2250526,371,308)
{
Data=Real(719163)
link(onEventData,16762688:doCalc,[])
}
Add(Registry,2448422,483,308)
{
HKey=2
Key="SOFTWAREMicrosoftWindows NTCurrentVersion"
Value="InstallDate"
DataType=0
}
Add(Label,10507119,301,168)
{
Top=35
Width=392
Height=17
Font=[MS Sans Serif,8,1,255,1]
Caption="Нажатие кнопки "Установить" изменит дату установки Windows"
}
Add(StyleXP,16043928,301,252)
{
}
Add(Label,5226136,301,210)
{
Left=20
Top=15
Width=88
Height=17
Caption="Дата установки:"
}
Add(Button,16246817,308,308)
{
Left=265
Top=10
Width=120
Caption="Установить"
link(onClick,2250526:doData,[])
}

Если Ваша схема работала, то и эта должна, проверьте (почти ничего не добавлял и не менял, немного убрал лишнее).
карма: 1

1
Голосовали:KopBuH
Ответов: 16884
Рейтинг: 1240
#5: 2011-06-06 19:58:51 ЛС | профиль | цитата
Тогда уже так:
Add(MainForm,382254,154,196)
{
Width=357
Height=79
Caption="Изменение даты установки Windows"
BorderStyle=1
Position=1
link(onCreate,2448422:doRead,[])
}
Add(DatePicker,2504144,322,210)
{
Left=120
Top=10
Width=140
Height=21
Point(DateTime)
Point(CurrentDateTime)
}
Add(Registry,2448422,217,210)
{
HKey=2
Key="SOFTWAREMicrosoftWindows NTCurrentVersion"
Value="InstallDate"
DataType=0
link(onRead,11610225:doConvert,[])
}
Add(DateConvertor,11610225,266,210)
{
Mode=18
link(onResult,2504144:doSetDate,[])
}
Add(DateConvertor,16633226,322,259)
{
Mode=19
Point(Data)
link(onResult,2448422:doWrite,[(374,265)(374,304)(205,304)(205,223)])
link(Data,2504144:DateTime,[])
}
Add(Label,818394,154,259)
{
Left=10
Top=10
Width=105
Caption="Дата установки"
AutoSize=1
Alignment=1
}
Add(Button,8685199,217,259)
{
Left=270
Top=10
Width=75
Caption="Изменить"
link(onClick,15489227:doEvent1,[])
}
Add(Hub,15489227,273,259)
{
link(onEvent1,16633226:doConvert,[])
link(onEvent2,382254:doClose,[(294,272)(294,313)(142,313)(142,223)])
}


Как вычислить разницу в секундах между двумя датами?
и при чем здесь смена даты ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:KopBuH
Ответов: 3889
Рейтинг: 362
#6: 2011-06-06 23:15:33 ЛС | профиль | цитата
Tad писал(а):
при чем здесь смена даты ?


Вероятно, чтобы самому высчитать дельту от 1970-го года до выбранного.
карма: 1

0
Ответов: 35
Рейтинг: 5
#7: 2011-06-07 09:45:49 ЛС | профиль | цитата
Tad писал(а):
Тогда уже так:

Схема полностью рабочая. Thnks. +1
карма: 0

0
Ответов: 3889
Рейтинг: 362
#8: 2011-06-07 11:49:13 ЛС | профиль | цитата
KopBuH, Наверное, стоит пояснить комментарий коллеги Tad, дело в том, что в HiAsm уже поддерживается тип даты Unix, который как раз отсчитывается в секундах от 1 января 1970 года (в компонент DateConvertor встроена арифметика с этой константой), посему дополнительные вычисления можно не делать, что он Вам и продемонстрировал. Мой же пример был простой оптимизацией Вашего и наглядно показывает Вам, как важно читать документацию о приоритетах между поступающими данными и вообще о парадигме потоков.
карма: 1

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