IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Время в Файлы!
сообщение
Сообщение #1


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Добрый день!
Я пишу программку, которая должна была бы вести учетную запись времени провождения пользователя за время работы данной программы.
То есть в автозапуске есть программа x , которая должна готовить отчеты по пользователю в файле, например в файле 20070929(дата) будет сказано
07:00-16:25
16:30-16:45
а это значит что Петров сидел целый день перед компом, а родителям говорит что и не подходил к нему smile.gif
Сначала я хотел создать нетипизированный файл и туда кидать время, но у меня не получилось работать с буфером и в файл пролазило много лишнего кроме времени(файл time0.pp), позже было еще много попыток вследствии которых уже и время не пишется… и сейчас есть код где создается типизированный файл (of TDateTime) и туда(time1.pp) пишется какой-то бред…

Помогите пожалуйста.





Прикрепленные файлы
Прикрепленный файл  time1.txt ( 2.18 килобайт ) Кол-во скачиваний: 422
Прикрепленный файл  time0.txt ( 2.23 килобайт ) Кол-во скачиваний: 431


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Ну, допустим, функция Date() реализуется гораздо проще:

function Date():string;
begin
result := Format('%.4d%.2d%.2d',
[YearOf(Now()), MonthOf(Now()), DayOf(Now())]);
end;



Теперь о программе: я не совсем понял, почему:
  if ((Time - DateOf(now)) <> SleepTime) then begin  // если машину выключали 
? Откуда такой вывод, что если разность последней записанной даты и текущей НЕ равна 2 (2 чего? дня? месяца?), то машину выключали? Ну, и как следствие, все нижеследующее тоже неясно... Ты хочешь, чтобы у тебя каждый какой-то промежуток времени в файл что-то записывалось, или одноразово? Другими словами, эта программа будет постоянно висеть и что-то делать или она запускается, отрабатывает и до следующей перезагрузки не запускается?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 29.09.2007 20:17) *
Ну, допустим, функция Date() реализуется гораздо проще...
спасибо...(вот где Format и понадобился...)
Цитата(volvo @ 29.09.2007 20:17) *
Откуда такой вывод, что если разность последней записанной даты и текущей НЕ равна 2 (2 чего? дня? месяца?), то машину выключали?
да, тут надо поработать, думаю оптимально будет задавать SleepTime в TTime...
Цитата(volvo @ 29.09.2007 20:17) *
Другими словами, эта программа будет постоянно висеть и что-то делать или она запускается, отрабатывает и до следующей перезагрузки не запускается?
первое... это будет некий даемон. Ведь если в файл будет запись только при вкл/выкл ОС, то при аварийном завершении работы(пользователь нажмет Reset/Power) записи не будет.




--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
это будет некий даемон
Тогда проще будет по таймеру каждый промежуток времени (сколько там тебе надо - минуту? 30 секунд?) просто открывать файл, и если время записанное в последней записи отличается от текущего на этот самый промежуток, то перезаписывать последнее значение. Иначе (если прошло больше заданного промежутка времени, и программа не записывала ничего в файл, то логично предположить что компьютер выключался, или просто пользователь был разлогинен) - добавлять новую запись в файле...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


У меня возникают проблемы в работе с файлами... Какой тип лучше использовать(Файл дат, текстовой или нетипизированый) при учете возможного расширения функциональности(например найти количество минут провиденных пользователем за компом в течении дня)?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Или текстовый или типизированный, я бы выбрал File Of TDateTime (у тебя в любом случае есть средства конвертации дата <-> строка, зачем еще с BlockRead-ом для бестиповых файлов связываться?)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 1.10.2007 13:20) *
Или текстовый или типизированный, я бы выбрал File Of TDateTime (у тебя в любом случае есть средства конвертации дата <-> строка, зачем еще с BlockRead-ом для бестиповых файлов связываться?)
послушаюсь совета smile.gif

оффтоп
а как BlockWrite-ом писать блок ЛЮБОГО размера и можнали это вообще?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Любого это какого? Больше 64К?

В rtl.pdf приведен пример использования BlockRead/BlockWrite... Я только что этим примером скопировал файл блоками по 200000 байт... Единственное что пришлось поменять - это
NumRead, NumWritten: int64; { <--- }
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 1.10.2007 13:35) *
Любого это какого? Больше 64К?
нет малого, несколько байт..


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






От одного до... Сколько память позволит...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 1.10.2007 13:44) *
От одного до...
От одного? а не от 128 байт(16 байт) или это только в TP?

и еще как в типизированых файлах удалить элемент на который в данный момент указывает FilePos?


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата
а не от 128 байт(16 байт) или это только в TP?
blink.gif blink.gif

Если я открыл файл как Rewrite(f, 1); то кто мне и в TP запретит записать ровно один байт?

Цитата
как в типизированых файлах удалить элемент на который в данный момент указывает FilePos?
Что будет с последующими элементами?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 1.10.2007 14:28) *

blink.gif blink.gif Если я открыл файл как Rewrite(f, 1); то кто мне и в TP запретит записать ровно один байт?
это мой болт smile.gif ... я открывал Rewrite(f);

Цитата(volvo @ 1.10.2007 14:28) *
Что будет с последующими элементами?
неважно (их нету smile.gif )

добавлено
еще можна ли привести в синтаксически правильное выражение
 const //раздел описания 
SleepTime : TDateTime=StrToTime('0:0:1');


Сообщение отредактировано: compiler -


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Ну, если нету - то Truncate(f);


Цитата
можна ли привести в синтаксически правильное выражение
Это у тебя что? Секунда? Тогда
const
SleepTime: tdatetime = OneSecond;

 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 1.10.2007 15:32) *
Ну, если нету - то Truncate(f);
спасибо

Цитата(volvo @ 1.10.2007 15:32) *
Это у тебя что? Секунда?
пока незнаю , может секунда, а может 5 мин. , буду выражать в секундах. спасибо.


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






smile.gif Если в минутах - можно не умножать секунды на 60, есть OneMinute, и OneHour тоже есть...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(volvo @ 1.10.2007 15:48) *
smile.gif Если в минутах - можно не умножать секунды на 60, есть OneMinute, и OneHour тоже есть...
smile.gif еще раз спасибо.


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 6:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name