Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2013, 23:10   #11
belkeandrey
Пользователь
 
Регистрация: 21.02.2013
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Пипл, тут проблема толще чем кажется. А читает ли юзер текст вообще? Или уже минут ...дцать сидит на кухне и чай пьёт?

И да, все проще =)
Принцип маятника:
Код:
глобальные переменные: 
bControl:Boolean = False;
iTStart,iTEnd:DWORD;

Обработчик перехода из раздела в раздел:
begin
    if bControl then
    begin
      iTEnd:=GetTickCount-iTStart;
      ShowMessage('Я твой текст '+IntToStr(iTEnd div 1000)+' секунд шатал...!');
      iTEnd:=0;
      iTStart:=0;
      bControl:=False;
    end;
  iTStart:=GetTickCount;
  bControl:=True; 
end;
А можете поподробнее разъяснить что к чему
belkeandrey вне форума Ответить с цитированием
Старый 03.04.2013, 09:40   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а Вы прочитайте про GetTickCount...

суть в том, что при при первом входе переменная bControl равна false (означает, что ни один раздел ещё не был загружен).
тогда мы запоминаем текущее время в переменную iTStart
и ставим признак bControl := true , что чтение началось..

когда раздел будем менять (сработает обработчик перехода из раздела в раздел)
сработает код, но т.к. переменная bControl уже равна true, тогда находим разницу в milliseconds между текущим временем (GetTickCount) и запомненным (iTStart)
это и есть то время, которое был открыт сменяемый раздел. (а уж читал его пользователь или в окно глядел - сие неведомо...)


p.s. а таймер в этой задаче действительно никоим боком не нужен!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2013, 15:36   #13
belkeandrey
Пользователь
 
Регистрация: 21.02.2013
Сообщений: 48
По умолчанию

С этим разобрался, сделал через onchange richedit. А как сделать, чтобы новый текст в ричэдите автоматически перематывался на начало? Вставлять пробел перед загрузкой текста нельзя, чтобы лишний раз не срабатывал onchange.
belkeandrey вне форума Ответить с цитированием
Старый 03.04.2013, 22:39   #14
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

т.е чтобы текст загружался из файла, и показывал не конец текста а начало?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.04.2013, 22:57   #15
belkeandrey
Пользователь
 
Регистрация: 21.02.2013
Сообщений: 48
По умолчанию

Ага. Вроде получилось RichEdit.SelStart:=0.
belkeandrey вне форума Ответить с цитированием
Старый 03.04.2013, 23:24   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от noname_06 Посмотреть сообщение
После загрузки текста запускать таймер и делать inc(i), нажатие на кнопку сбрасывает таймер и записывает значение i в любую другую переменную. Как-то так?
Ужас!

Вы, наверное, и два числа складываете так:

Код:
  a := 1000;
  b := 1000;
...
  c := a;  // с := a + b;
  counter := b;
  while counter > 0 do begin
    inc(c);
    dec(counter);
  end;
Не нужно никаких таймеров: нужно два раза прочитать состояние часов (например, GetTickCount - измеряет в мс) - в начале и в конце, и вычесть одно из другого.
s-andriano вне форума Ответить с цитированием
Старый 05.04.2013, 19:08   #17
noname_06
Пользователь
 
Регистрация: 18.01.2009
Сообщений: 49
По умолчанию

s-andriano, признаю, идея не самая лучшая) Про GetTickCount совершенно не подумал. А вот Ваша идея с суммированием 2х чисел мне понравилась, возьму на вооружение)
noname_06 вне форума Ответить с цитированием
Старый 05.04.2013, 19:38   #18
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от noname_06 Посмотреть сообщение
А вот Ваша идея с суммированием 2х чисел мне понравилась, возьму на вооружение)
Рад за Вас.
Очевидно, пришла очередь идей, как отличить юзера, читающего, от юзера, смотрящего в окно.
s-andriano вне форума Ответить с цитированием
Старый 05.04.2013, 19:39   #19
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Пипл, тут проблема толще чем кажется. А читает ли юзер текст вообще? Или уже минут ...дцать сидит на кухне и чай пьёт?
Отслеживать события клавиатуры и мыши, переключение на другие окна, появление скринсейвера.
Arigato вне форума Ответить с цитированием
Старый 05.04.2013, 20:31   #20
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Отслеживать события клавиатуры и мыши, переключение на другие окна, появление скринсейвера.
Ну, скринсейвер, пожалуй, ненадежно (нет, если скринсейвер включился, то юзер, если что и читает, явно не текст с экрана) - сейчас их уже мало кто использует в силу бесполезности этого занятия.
Переключение на другие окна - стоит ли овчинка выделки? Ведь если если юзер читает текст с экрана, то активное окно - именно программа с текстом, а не пасьянс.
А вот отслеживание интервала между двумя последовательными сообщениями от органов управления окну с текстом, думаю, достаточно надежный критерий: если юзер не предпринимает никаких действий в окне в течение времени достаточного для 3-5-кратного прочтения текста, скорее всего, он занят чем-то другим, и этот интервал нужно вычитать из времени чтения.
s-andriano вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить где юзер закрыл браузер KLAXON PHP 13 11.02.2011 01:28
[PHP] Как узнать сколько прошло времени? RESPECT8 PHP 1 24.10.2010 09:43
Сколько стоит такая программка? И сколько по времени её сделать? Палыч I Фриланс 8 10.09.2010 16:23
Как определить сколько памяти у видеокарты flug Общие вопросы Delphi 12 13.07.2010 08:13