Время в Файлы! |
Время в Файлы! |
compiler |
29.09.2007 19:24
Сообщение
#1
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Добрый день!
Я пишу программку, которая должна была бы вести учетную запись времени провождения пользователя за время работы данной программы. То есть в автозапуске есть программа x , которая должна готовить отчеты по пользователю в файле, например в файле 20070929(дата) будет сказано 07:00-16:25 16:30-16:45 а это значит что Петров сидел целый день перед компом, а родителям говорит что и не подходил к нему Сначала я хотел создать нетипизированный файл и туда кидать время, но у меня не получилось работать с буфером и в файл пролазило много лишнего кроме времени(файл time0.pp), позже было еще много попыток вследствии которых уже и время не пишется… и сейчас есть код где создается типизированный файл (of TDateTime) и туда(time1.pp) пишется какой-то бред… Помогите пожалуйста. Прикрепленные файлы time1.txt ( 2.18 килобайт ) Кол-во скачиваний: 275 time0.txt ( 2.23 килобайт ) Кол-во скачиваний: 284 -------------------- Спасибо!
Удачи! |
volvo |
29.09.2007 20:17
Сообщение
#2
|
Гость |
Ну, допустим, функция Date() реализуется гораздо проще:
function Date():string; Теперь о программе: я не совсем понял, почему: if ((Time - DateOf(now)) <> SleepTime) then begin // если машину выключали? Откуда такой вывод, что если разность последней записанной даты и текущей НЕ равна 2 (2 чего? дня? месяца?), то машину выключали? Ну, и как следствие, все нижеследующее тоже неясно... Ты хочешь, чтобы у тебя каждый какой-то промежуток времени в файл что-то записывалось, или одноразово? Другими словами, эта программа будет постоянно висеть и что-то делать или она запускается, отрабатывает и до следующей перезагрузки не запускается? Сообщение отредактировано: volvo - 29.09.2007 20:17 |
compiler |
1.10.2007 12:54
Сообщение
#3
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Ну, допустим, функция Date() реализуется гораздо проще... спасибо...(вот где Format и понадобился...)Откуда такой вывод, что если разность последней записанной даты и текущей НЕ равна 2 (2 чего? дня? месяца?), то машину выключали? да, тут надо поработать, думаю оптимально будет задавать SleepTime в TTime... Другими словами, эта программа будет постоянно висеть и что-то делать или она запускается, отрабатывает и до следующей перезагрузки не запускается? первое... это будет некий даемон. Ведь если в файл будет запись только при вкл/выкл ОС, то при аварийном завершении работы(пользователь нажмет Reset/Power) записи не будет.-------------------- Спасибо!
Удачи! |
volvo |
1.10.2007 13:01
Сообщение
#4
|
Гость |
Цитата это будет некий даемон Тогда проще будет по таймеру каждый промежуток времени (сколько там тебе надо - минуту? 30 секунд?) просто открывать файл, и если время записанное в последней записи отличается от текущего на этот самый промежуток, то перезаписывать последнее значение. Иначе (если прошло больше заданного промежутка времени, и программа не записывала ничего в файл, то логично предположить что компьютер выключался, или просто пользователь был разлогинен) - добавлять новую запись в файле... |
compiler |
1.10.2007 13:14
Сообщение
#5
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
У меня возникают проблемы в работе с файлами... Какой тип лучше использовать(Файл дат, текстовой или нетипизированый) при учете возможного расширения функциональности(например найти количество минут провиденных пользователем за компом в течении дня)?
-------------------- Спасибо!
Удачи! |
volvo |
1.10.2007 13:20
Сообщение
#6
|
Гость |
Или текстовый или типизированный, я бы выбрал File Of TDateTime (у тебя в любом случае есть средства конвертации дата <-> строка, зачем еще с BlockRead-ом для бестиповых файлов связываться?)
|
compiler |
1.10.2007 13:23
Сообщение
#7
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Или текстовый или типизированный, я бы выбрал File Of TDateTime (у тебя в любом случае есть средства конвертации дата <-> строка, зачем еще с BlockRead-ом для бестиповых файлов связываться?) послушаюсь совета оффтоп а как BlockWrite-ом писать блок ЛЮБОГО размера и можнали это вообще? -------------------- Спасибо!
Удачи! |
volvo |
1.10.2007 13:35
Сообщение
#8
|
Гость |
Любого это какого? Больше 64К?
В rtl.pdf приведен пример использования BlockRead/BlockWrite... Я только что этим примером скопировал файл блоками по 200000 байт... Единственное что пришлось поменять - это NumRead, NumWritten: int64; { <--- } |
compiler |
1.10.2007 13:39
Сообщение
#9
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
-------------------- Спасибо!
Удачи! |
volvo |
1.10.2007 13:44
Сообщение
#10
|
Гость |
От одного до... Сколько память позволит...
|
compiler |
1.10.2007 13:58
Сообщение
#11
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
От одного до... От одного? а не от 128 байт(16 байт) или это только в TP?и еще как в типизированых файлах удалить элемент на который в данный момент указывает FilePos? -------------------- Спасибо!
Удачи! |
volvo |
1.10.2007 14:28
Сообщение
#12
|
Гость |
Цитата а не от 128 байт(16 байт) или это только в TP? Если я открыл файл как Rewrite(f, 1); то кто мне и в TP запретит записать ровно один байт? Цитата как в типизированых файлах удалить элемент на который в данный момент указывает FilePos? Что будет с последующими элементами? |
compiler |
1.10.2007 14:37
Сообщение
#13
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Если я открыл файл как Rewrite(f, 1); то кто мне и в TP запретит записать ровно один байт? Что будет с последующими элементами? неважно (их нету )добавлено еще можна ли привести в синтаксически правильное выражение const //раздел описания Сообщение отредактировано: compiler - 1.10.2007 14:54 -------------------- Спасибо!
Удачи! |
volvo |
1.10.2007 15:32
Сообщение
#14
|
Гость |
Ну, если нету - то Truncate(f);
Цитата можна ли привести в синтаксически правильное выражение Это у тебя что? Секунда? Тогдаconst |
compiler |
1.10.2007 15:41
Сообщение
#15
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Ну, если нету - то Truncate(f); спасибоЭто у тебя что? Секунда? пока незнаю , может секунда, а может 5 мин. , буду выражать в секундах. спасибо.-------------------- Спасибо!
Удачи! |
volvo |
1.10.2007 15:48
Сообщение
#16
|
Гость |
Если в минутах - можно не умножать секунды на 60, есть OneMinute, и OneHour тоже есть...
|
compiler |
1.10.2007 15:55
Сообщение
#17
|
Человек Группа: Пользователи Сообщений: 1 050 Пол: Мужской Реальное имя: Станислав Репутация: 3 |
Если в минутах - можно не умножать секунды на 60, есть OneMinute, и OneHour тоже есть... еще раз спасибо.-------------------- Спасибо!
Удачи! |
Текстовая версия | 27.04.2024 16:59 |