Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить, сколько времени юзер читал текст 
:(
    Опции темы
belkeandrey
Дата 2.4.2013, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.2.2013

Репутация: нет
Всего: нет



Коллеги, проблема такая. Уже как говорится, голова вскипела. Есть форма, есть кнопки с названием разделов, есть ричэдит. При нажатии на кнопку подгружаем файл в ричэтид. Юзер его читает, потом выбирает другой раздел, при этом меняется только путь к файлу и он видит другой текст. Как определить, сколько времени читал текст юзер до перехода в другой раздел. Если бы каждый раздел был в новой форме, проблем бы не было, просто событие onclose или подобное. А тут как подойти не соображу...
PM MAIL WWW   Вверх
Poseidon
Дата 2.4.2013, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Засекаешь время при открытии раздела, затем засекаешь при открытии другого и отнимаешь. В чем проблема возникла?
Цитата(belkeandrey @  2.4.2013,  20:42 Найти цитируемый пост)
При нажатии на кнопку подгружаем файл в ричэтид.
Вот прямо тут и засекай.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
belkeandrey
Дата 2.4.2013, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.2.2013

Репутация: нет
Всего: нет



У меня считается время таймером по 1 секунде увеличивая переменную на 1. От этого и отталкиваюсь, но никак не получается. Разделов много, а как вы имеете в виду засечь?
PM MAIL WWW   Вверх
kami
Дата 2.4.2013, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 23
Всего: 72



Цитата(belkeandrey @  2.4.2013,  20:42 Найти цитируемый пост)
Как определить, сколько времени читал текст юзер до перехода в другой раздел.

smile А юзер в это время ушел попить кофе, или в чат срулил.

Цитата(belkeandrey @  2.4.2013,  20:42 Найти цитируемый пост)
просто событие onclose или подобное.

А тут - просто метод, вызывающий загрузку нового текста. Разницы нет вообще.

PM MAIL WWW   Вверх
Данкинг
Дата 2.4.2013, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Цитата(belkeandrey @  2.4.2013,  22:38 Найти цитируемый пост)
У меня считается время таймером по 1 секунде увеличивая переменную на 1

Ну, по клику на кнопках считывать/обнулять значение глобальной переменной, которая увеличивается по таймеру.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akella
Дата 2.4.2013, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



ты не можешь определить сколько пользователь реально читал текст, можешь только определить время между некоторыми событиями в программе, а читал он или нет - как узнать?
PM MAIL   Вверх
belkeandrey
Дата 3.4.2013, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.2.2013

Репутация: нет
Всего: нет



Цитата(kami @ 2.4.2013,  22:17)
Цитата(belkeandrey @  2.4.2013,  20:42 Найти цитируемый пост)
Как определить, сколько времени читал текст юзер до перехода в другой раздел.

smile А юзер в это время ушел попить кофе, или в чат срулил.

Цитата(belkeandrey @  2.4.2013,  20:42 Найти цитируемый пост)
просто событие onclose или подобное.

А тут - просто метод, вызывающий загрузку нового текста. Разницы нет вообще.


Да это не критично smile 

Кнопок много, ричэдит один. Нужно чтобы после нажатия на любую из кнопок сначала посчиталось время показа одного текста, а потом начался новый отсчет и так циклично на все кнопки...

Добавлено через 1 минуту и 36 секунд
Цитата(Akella @ 2.4.2013,  23:58)
ты не можешь определить сколько пользователь реально читал текст, можешь только определить время между некоторыми событиями в программе, а читал он или нет - как узнать?

Да это и нужно, а читал он или нет, это уже его проблемы smile 
PM MAIL WWW   Вверх
Beltar
Дата 3.4.2013, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 3
Всего: 7



Создай массив TDateTime, размерность задать по числу разделов, засекай момент загрузки раздела, засекай момент перехода к следующему, или иного события прекращения чтения, разницу суммируй с уже накопленным в массиве. Будет работать даже если юзер бегает туда-сюда. А лучше не DateTime, а Cardinal, и снимай замеры в миллисекундах с помощью GetTickCount (Сия функция первый помощник программиста, когда надо быстренько померить время), тогда не выйдет обмануть с помощью перевода часов, если это критично.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
belkeandrey
Дата 3.4.2013, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.2.2013

Репутация: нет
Всего: нет



Цитата(Данкинг @ 2.4.2013,  23:06)
Цитата(belkeandrey @  2.4.2013,  22:38 Найти цитируемый пост)
У меня считается время таймером по 1 секунде увеличивая переменную на 1

Ну, по клику на кнопках считывать/обнулять значение глобальной переменной, которая увеличивается по таймеру.

допустим глобально считаются секунды.
кликнул на 1й раздел - считали переменную, обнулили
кликнул на 2й раздел - запустили таймер, а как же одним кликом и считать то?

При кажущейся простоте, я что-то совсем запутался.... Завтра утром надо свежим взглядом смотреть smile

Добавлено через 5 минут и 23 секунды
Цитата(Beltar @ 3.4.2013,  00:14)
Создай массив TDateTime, размерность задать по числу разделов, засекай момент загрузки раздела, засекай момент перехода к следующему, или иного события прекращения чтения, разницу суммируй с уже накопленным в массиве. Будет работать даже если юзер бегает туда-сюда. А лучше не DateTime, а Cardinal, и снимай замеры в миллисекундах с помощью GetTickCount (Сия функция первый помощник программиста, когда надо быстренько померить время), тогда не выйдет обмануть с помощью перевода часов, если это критично.

Вот это уже ближе к моей ситуации smile  А с кодом не поможешь? smile 
PM MAIL WWW   Вверх
Данкинг
Дата 3.4.2013, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



А что в итоге надо получить? Время по каждому разделу?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
belkeandrey
Дата 3.4.2013, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.2.2013

Репутация: нет
Всего: нет



Цитата(Данкинг @ 3.4.2013,  00:29)
А что в итоге надо получить? Время по каждому разделу?

В итоге мне надо название просмотренного текста и время его "просмотра" поместить в БД с помощью ADOQuery, причем желательно одновременно. Помещать эту инфу надопосле каждой смены раздела или ухода в другую часть проги...
PM MAIL WWW   Вверх
Данкинг
Дата 3.4.2013, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Ну, тогда достаточно одной переменной, значение которой будет заноситься в таблицу при смене раздела.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
northener
Дата 3.4.2013, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(belkeandrey @  2.4.2013,  21:38 Найти цитируемый пост)
У меня считается время таймером по 1 секунде увеличивая переменную на 1. От этого и отталкиваюсь, но никак не получается. 

Код показывай. Как "отталкиваешься",  и что никак не получается.
P.S. Имхо в итоге всё сведётся к незанию работы с БД. smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Poseidon
Дата 3.4.2013, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(belkeandrey @  3.4.2013,  00:06 Найти цитируемый пост)
Кнопок много, ричэдит один. 
У RichEdit есть событие OnChange, которое происходит при каждом изменении текста. Не нужно пихать на все кнопки, можно запихнуть сюда. При выполнении:
  • считываем переменную
  • загоняем значение в БД
  • обнуляем





--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
belkeandrey
Дата 3.4.2013, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 21.2.2013

Репутация: нет
Всего: нет



Цитата(Poseidon @ 3.4.2013,  08:31)
Цитата(belkeandrey @  3.4.2013,  00:06 Найти цитируемый пост)
Кнопок много, ричэдит один. 
У RichEdit есть событие OnChange, которое происходит при каждом изменении текста. Не нужно пихать на все кнопки, можно запихнуть сюда. При выполнении:


  • считываем переменную

  • загоняем значение в БД

  • обнуляем


Спасибо, добрый человек smile  Я только начал изучать дельфи, не все события знаю. Все работает на 5, но надо повозиться с условиями, т.к. текст много меняется и по другим причинам (поиск).

Добавлено через 4 минуты и 41 секунду
Только как теперь сделать, чтобы при подгрузке нового текста, скролл перемещался на начало?
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1023 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.