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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2010, 12:42   #1
Berta
 
Регистрация: 06.04.2010
Сообщений: 6
По умолчанию Как записать в массив время нажатия, отжатия клавиш

Добрый день! Мне необходимо зафиксировать и записать в массив время нажатия и отжатия клавиш при наборе слова. Время програмка фиксирует и записывает в текстовый файл, а потом оттуда в массив, но при том условии если при нажатии клавиш нет перекрытия во времени! Теперь проблема как сделать так что-бы и при перекрытии время записывалось в массив...

Ну например, если без перекрытия писать "23", то массив запишется, как
0 4
6 9
(0;6 - время нажатия, 4;9 - время отжатия ) с этим все ОК.

А с перекрытия запишет в файл так(естественно и масив запишется коряво)
0 4 6
9
(0;4 - время нажатия (нажимаю "2" и удерживая нажимаю "3"))
6;9 - время отжатия (отпускаю "2" а потом "3")
Т.е. в идеале нужно чтоб записалось
0 6
4 9
В этом и проблема не знаю как это сделать....

Заранее всем кто откликнится огромное спасибо)))

Код:
procedure TForm2.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
 var
   vremup: array[1..14] of word;
 begin
   n:=1;
   Timer3.Enabled := True;
   Qi := '9.txt';
   AssignFile(A, Qi);
   append(A);
     for m:=1 to Length(edit1.text) do
       begin
         if  Length(edit1.text)=n then
           Timer3.Enabled := True
              else
                Timer3.Enabled := False;
                n:=n+1;
           vremup[i]:=StrToInt(label22.Caption)+StrToInt(label15.Caption)*100; 
//Запись временного интервала между нажатий клавишь в массив
            for i := 0 to Length(edit1.text) do
        end;
    writeln(A,inttostr(vremup[i]));//Запись в файл
    CloseFile(A);
  end;
Код:
procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: word ;
  Shift: TShiftState);
   var
      vremdown: array[1..14] of integer;
   begin
      n:=1;
      Timer3.Enabled := True;
      Qi := '9.txt';
      AssignFile(A, Qi);
      append(A);
        for m:=1 to Length(edit1.text) do
          begin
             if  Length(edit1.text)=n then
                Timer3.Enabled := True
                   else
                     Timer3.Enabled := False;
                     n:=n+1;
      vremdown[i]:=StrToInt(label22.Caption)+StrToInt(label15.Caption)*100; 
//Запись временного интервала между нажатий клавишь в массив
                    for i := 0 to Length(edit1.text) do
          end;
       write(A,inttostr(vremdown[i]),' ');//Запись в файл
       CloseFile(A);
    end;
Код:
procedure TForm2.Button5Click(Sender: TObject);
var
 v:integer;
  rez: array[1..14, 1..2] of integer;
  raz: array[1..14] of integer;
  sumr:integer;
  ai: integer;
  sumr1:real;
  g,o1,o2,o3:integer;
  sumr2:real;
  ot:integer;
begin
  sumr:=0;
  ot:=0;
  Qi := '9.txt';
  AssignFile(A, Qi);
  reset(A);
  n:=length(edit1.text);
  //записываемв в матрицу время нажатия и время отжатия клавиш
    for i:=1 to n do
    for r:=1 to 2 do
     begin
      read(A,v);
      rez[i, r]:=v;
         if rez[i, r+1]>rez[i+1, r] then
           begin
             ot:=ot+1;
           end;
      raz[i]:= rez[i, 2]-rez[i, 1]; //разность между временем отжатия и нажатия клавиши
     end;    
    for i:= 1 to n do
    sumr:=sumr+raz[i]; //сумма разности времени нажатия и отжатия
    sumr2:=sumr*1/20*1/60; //перевод в минуты
    sumr1:=round(length(edit1.text)/sumr2);//скорость ввода символов
    CloseFile(A);
end.
Berta вне форума Ответить с цитированием
Старый 06.04.2010, 14:29   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

а если написать в файл так
Цитата:
Ну например, если без перекрытия писать "23", то массив запишется, как
0 4
6 9
(0;6 - время нажатия, 4;9 - время отжатия ) с этим все ОК.
0 +
4 -
6 +
9 -
Цитата:
А с перекрытия запишет в файл так(естественно и масив запишется коряво)
0 4 6
9
(0;4 - время нажатия (нажимаю "2" и удерживая нажимаю "3"))
6;9 - время отжатия (отпускаю "2" а потом "3")
0 +
4 +
6 -
9 -
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.04.2010 в 14:32.
evg_m вне форума Ответить с цитированием
Старый 06.04.2010, 16:05   #3
Berta
 
Регистрация: 06.04.2010
Сообщений: 6
По умолчанию

Цитата:
а если написать в файл так
А как тогда потом из текстового файла сформировать необходимый массив(а главная задача именно это) т.е [i,j] - где i - время нажатия, j-время отжатия...

если при простом вводе все понятно, то как быть с перекрытием?
как вообще прописать чтоб понять, что при
0 +
4 +
6 -
9 -
это правильное соотношение:
0 - 6???
4 - 9???

Или может я не совсем правильно вас поняла?

Последний раз редактировалось Berta; 06.04.2010 в 16:07.
Berta вне форума Ответить с цитированием
Старый 06.04.2010, 17:12   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
А как тогда потом из текстового файла сформировать необходимый массив(
а какой массив будет правильным (какие к нему требования)?

если данных недостаточно для определения значит надо их добавить
как мы добавили нажали(+)/отпустили(-)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.04.2010 в 17:18.
evg_m вне форума Ответить с цитированием
Старый 06.04.2010, 17:29   #5
Berta
 
Регистрация: 06.04.2010
Сообщений: 6
По умолчанию

Цитата:
если данных недостаточно для определения значит надо их добавить
как мы добавили нажали(+)/отпустили(-)
хм... кажется поняла))) Попробую, отпишусь...
Berta вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитация нажатия клавиш Air Свободное общение 28 04.02.2010 12:38
перехват нажатия клавиш skalt12 Общие вопросы Delphi 4 17.08.2009 13:06
Время нажатия на кнопку мыши(Время реакции) Кирилл13 Помощь студентам 1 11.04.2009 19:41
Перехват нажатия клавиш. Vi_russ Общие вопросы Delphi 1 02.12.2008 20:25
Как заставить программу реагтровать на нажатия клавиш? AngelOfDeath Общие вопросы Delphi 9 07.04.2008 23:58