1 / 1 / 2
Регистрация: 29.09.2012
Сообщений: 22
1

Длительность работы компьютера

16.05.2013, 21:25. Показов 1160. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Может завалялся у кого алгоритм подсчета длительности работы компьютера нескольких пользователей(с обновлением после выключения и т.д.) с сохранением в бд ?
Я попытался сделать, но получилось не очень и есть ошибки конечно.
C++
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
void AddWorkedTimeToDataBase(void)
{
TDateTime Worked            = GetWorked(); // Время работы 3:25   (3 часа 25 минут) 
TDateTime StartWork           = IncMilliSecond(Now(),-((__int64)GetTickCount()));// 10.10.2010 10:10:10 время включения
TDateTime CurrentDate   = Now().FormatString("dd.mm.yyyy");
int ROWS                = StatForm->ADODataSet1->RecordCount;
bool Finded             = false;
 
StatForm->ADODataSet1->First();
for(int j=1;j<ROWS+1;j++)         // проходим по строкам
{
    if(UserInfo.CurrentUserName == StatForm->ADODataSet1->Fields->Fields[0]->AsString)//CurrentUserName = текущий пользователь
    {
            if(CurrentDate == StatForm->ADODataSet1->Fields->Fields[1]->AsDateTime)
            {
                TDateTime Buff = StatForm->ADODataSet1->Fields->Fields[3]->AsDateTime;
                TDateTime BuffMin = IncSecond(Buff,-30);
                TDateTime BuffMax = IncSecond(Buff,30);
                Finded=true;
                if( (StartWork < BuffMax)&&(StartWork > BuffMin) )
                     {
                     TDateTime Elapsed;
                     if(StartWork.FormatString(TimeFormat)>Now().FormatString(TimeFormat))
                        {   //если запущено день назад
                        Elapsed = Worked - ((TDateTime)1.0 - StartWork.FormatString(TimeFormat));
                        }               
                     else
                        {              // иначе(если сегодня)
                        if(Worked.FormatString(TimeFormat)>Buff.FormatString(TimeFormat))
                            {
                            if(Worked.FormatString(TimeFormat)>StartWork.FormatString(TimeFormat))
                                {
                                Elapsed = StatForm->
                                                     ADODataSet1->Fields->Fields[2]->AsDateTime +Worked.FormatString(TimeFormat);
                                }
                            else
                                {
                                Elapsed = Worked.FormatString(TimeFormat);
                                }
                            }
                        else
                            {
                            if( (GB < BuffMax)&&(GB> BuffMin))
                                {
                                Elapsed = (GS+(Now()-GB)).FormatString(TimeFormat);
                                }
                            else
                                {
                                Elapsed = Worked.FormatString(TimeFormat);
                                GS = Elapsed.FormatString(TimeFormat);
                                }
                            }
                        }
                     StatForm->ADODataSet1->Edit();
                     StatForm->ADODataSet1->Fields->Fields[2]->AsDateTime=Elapsed.FormatString(TimeFormat);
                     StatForm->ADODataSet1->Fields->Fields[3]->AsDateTime=StartWork;
                     StatForm->ADODataSet1->Post();
                     return;
                     }
                else {
                     TDateTime Buff1 = 
                                       (StatForm->ADODataSet1->Fields->Fields[2]>AsDateTime+Worked.FormatString(TimeFormat));
                     StatForm->ADODataSet1->Edit();
                     StatForm->ADODataSet1->Fields->Fields[2]->AsDateTime = Buff1.FormatString(TimeFormat);
                     StatForm->ADODataSet1->Fields->Fields[3]->AsDateTime = StartWork;
                     StatForm->ADODataSet1->Post();
                     GS = StatForm->ADODataSet1->Fields->Fields[2]->AsDateTime.FormatString(TimeFormat);
                     GB = StatForm->ADODataSet1->Fields->Fields[3]->AsDateTime;
                     return;
                     }
            }
    }
StatForm->ADODataSet1->Next();
}
//--если не нашли не одной записи для текущего дня, добавляем новую-------------
if(!Finded)
    {
    TDateTime Elapsed;
    if(StartWork.FormatString(TimeFormat)>Now().FormatString(TimeFormat)){  
    Elapsed = Worked - ((TDateTime)1.0 - StartWork.FormatString(TimeFormat));}              
    else{Elapsed = Worked;}
    StatForm->ADODataSet1->Insert();
    StatForm->ADODataSet1->Fields->Fields[0]->Value     =UserInfo.CurrentUserName;
    StatForm->ADODataSet1->Fields->Fields[1]->AsDateTime    =Now().FormatString("dd.mm.yyyy");
    StatForm->ADODataSet1->Fields->Fields[2]->AsDateTime    =Elapsed.FormatString(TimeFormat);
    StatForm->ADODataSet1->Fields->Fields[3]->AsDateTime    =StartWork;
    }
}
//---------------------------------------------------------------------------
//В бд записи вида
//Пользователь+
//  День|Время работы|Время включения компьютера
//
//Артем
// 15.05.2013 | 05:13 | 15.05.2013 15:15:30
// 14.05.2013 | 05:13 | 14.05.2013 15:15:30
//Дмитрий
// 15.05.2013 | 01:13 | 15.05.2013 15:15:30
// 14.05.2013 | 01:13 | 14.05.2013 15:15:30
//---------------------------------------------------------------------------
Наврятли кто будет смотреть ошибки конечно. Но Может у кого есть готовая функция с записью в txt \ access ?

Добавлено через 10 минут
Не обязательно нескольких, что то я разбежался.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2013, 21:25
Ответы с готовыми решениями:

Длительность работы сайта
Есть бесплатные хостинги, где сайт будет &quot;храниться&quot; бесконечно(пока хостинг не закроют), т.е. даже...

Ускорение работы компьютера, а так же работы Интернета (u22)
Когда допустим, включаю компьютер, у меня очень долго стоит заставка &quot;Добро пожаловать&quot; а так же...

Ускорение работы компьютера, а так же работы Интернета
Как ускорить работы компьютера, и чтобы ПРИСУТСТВОВАЛА БЕЗОПАСНОСТЬ моего компьютера? моих данных....

Время работы компьютера
Здравствуйте! Прошу помощи. У меня в диспетчере задач показывает время работы 11:09:42:30, т.е....

2
1702 / 898 / 207
Регистрация: 25.11.2009
Сообщений: 1,847
16.05.2013, 22:15 2
Цитата Сообщение от Kille1r Посмотреть сообщение
Я попытался сделать, но получилось не очень и есть ошибки конечно.
можно попробовать исправить ошибки, только ты процитируй сообщения об ошибках и скажи к каким строкам они относятся
0
1 / 1 / 2
Регистрация: 29.09.2012
Сообщений: 22
16.05.2013, 22:22  [ТС] 3
Цитата Сообщение от Lelik-pahan Посмотреть сообщение
можно попробовать исправить ошибки, только ты процитируй сообщения об ошибках и скажи к каким строкам они относятся
Запускаю программу, допустим компьютер работает уже 30 минут.
Заносит в БД 30 минут (ОК)
Перезагружаю компьютер
Запускаю программу, компьютер работает 1 минуту.
Заносит в БД 31 минут (ОК)
теперь обновляю еще раз, и теперь заносит не 32 минут(допустим обновление раз в минуту) а 2 минуты
это 50,51 строка кода
0
16.05.2013, 22:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2013, 22:22
Помогаю со студенческими работами здесь

Время работы компьютера
помогите разобраться, есть пример на VB.NET не могу понять как реализовать это на шарпе Public...

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

Время работы компьютера
Предлагаю вашему вниманию скрипт, написанный на VBScript. Скрипт показывает рядом с системными...

Понимание работы компьютера
Здравствуйте. Хочу понять как работает компьютер, а в частности различные транзисторы, микросхемы,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru