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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2010, 16:32   #1
BBOBAHH
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 30
По умолчанию расчет времени между НАЖАТИЕМ и ОТПУСКАНИЕМ кнопки мыши

Всем привет Уважаемые ГУРУ растолкуйте каким образом можно реализовать задачу:
В форме кнопка и метка лабел. Надо чтоб ПРИ НАЖАТИИ мышкой на кнопку в форме считывалось реальное время в ТАЙМ1. А при ОТПУСКАНИИ считывалось ТАЙМ2 и в метке лабел отображалась разница ТАЙМ3=ТАЙМ2-ТАЙМ1 причем интересуют только секунды и доли секунд с точностью до десятых долей секунд( а не десятитысячных). И ТАЙМ3 должно быть цифрой, а не строчным символом (для дальнейших расчетов)
BBOBAHH вне форума Ответить с цитированием
Старый 06.10.2010, 16:54   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
var  time1, time2, time3: TTime; //Глобальные


procedure TForm1.RzBitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  time1 := Time;
end;

procedure TForm1.RzBitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var h, m, s, ms: Word;
begin
  time2 := Time;
  time3 := time2 - time1;
  DecodeTime(time3, h, m, s, ms);
  label1.Caption := IntToStr(s) + ',' + IntToStr(ms div 100);
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 06.10.2010, 17:22   #3
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Код:
var  time1, time2, time3: TTime; //Глобальные


procedure TForm1.RzBitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  time1 := Time;
end;

procedure TForm1.RzBitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var h, m, s, ms: Word;
begin
  time2 := Time;
  time3 := time2 - time1;
  DecodeTime(time3, h, m, s, ms);
  label1.Caption := IntToStr(s) + ',' + IntToStr(ms div 100);
end;
возможно вы имели ввиду
Код:
label1.Caption := IntToStr(s) + ',' + IntToStr(ms div 1000);
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 06.10.2010, 17:39   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Неа, именно на 100. Тысячные div 1000 всегда будут давать ноль.
Но здесь из-за DIV будут неточности c округлением. Например, 0,868 будет 0,8 вместо 0,9.
Надо переводить в float и делать RoundTo(<число>,-1)

Наверно, вот так будет правильно
uses Math;


Код:
var h, m, s, ms: Word;
  st: string;
  d: Double;
begin
  time2 := Time;
  time3 := time2 - time1;
  DecodeTime(time3, h, m, s, ms);
  st := IntToStr(s) + '.' + IntToStr(ms);
  d := RoundTo(StrToFloat(st), -1);
  label1.Caption := FloatToStr(d);
end;

Последний раз редактировалось _SERGEYX_; 06.10.2010 в 17:49.
_SERGEYX_ вне форума Ответить с цитированием
Старый 06.10.2010, 17:50   #5
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от _SERGEYX_ Посмотреть сообщение
Неа, именно на 100. Тысячные div 1000 всегда будут давать ноль.
Но здесь из-за DIV будут неточности c округлением. Например, 0,868 будет 0,8 вместо 0,9.
Надо переводить в float и делать RoundTo(<число>,-1)
угу, тупанул, не дочитал топик до конца и подумал, что нужно в секундах считать.
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 06.10.2010, 19:52   #6
BBOBAHH
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 30
По умолчанию

в этой строке мой 7-й дэлфи видит ошибку.... курсор встает после RoundTo


Код:
d := RoundTo(StrToFloat(st), -1);

Последний раз редактировалось BBOBAHH; 06.10.2010 в 20:06.
BBOBAHH вне форума Ответить с цитированием
Старый 06.10.2010, 20:04   #7
fenix-elite
Пользователь
 
Аватар для fenix-elite
 
Регистрация: 02.11.2008
Сообщений: 75
По умолчанию

модуль math в uses добавь.
«Когда ты действительно чего-то хочешь, вся Вселенная помогает тебе осуществить твою мечту».(с) Пауло Коэльо
fenix-elite вне форума Ответить с цитированием
Старый 06.10.2010, 20:18   #8
BBOBAHH
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 30
По умолчанию

math добавил - проект запустился, при нажатии кнопки - ошибки нет, а вот при отпускании кнопки выскакивает окно такое :

error.jpg



а вообще еще вышеупомянутый код ( без
Код:
st := IntToStr(s) + '.' + IntToStr(ms);
  d := RoundTo(StrToFloat(st), -1);
  label1.Caption := FloatToStr(d);
) работает как надо

Код:
 var  time1, time2, time3: TTime; //Глобальные
procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
time1 := Time;
end;

procedure TForm1.Button1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

    var h, m, s, ms: Word;
 begin
 time2 := Time;
 time3 := time2 - time1;
 DecodeTime(time3, h, m, s, ms);
 label1.Caption := IntToStr(s) + ',' + IntToStr(ms div 100);

end;

Последний раз редактировалось BBOBAHH; 06.10.2010 в 21:11.
BBOBAHH вне форума Ответить с цитированием
Старый 06.10.2010, 21:13   #9
BBOBAHH
Пользователь
 
Регистрация: 02.07.2009
Сообщений: 30
По умолчанию

Так что всем огромное спасибо за помощь. Хотя это наверно еще не все, но по мере вопросов буду обращаться.
BBOBAHH вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перерисовка канвы нажатием кнопки клавы ViNcHeStEr Помощь студентам 3 07.04.2009 04:57
Управление нажатием кнопки в другом приложении Mikhail Bakurov Помощь студентам 5 13.10.2008 23:19
Проблема с нажатием кнопки мышки Zeraim Общие вопросы Delphi 2 23.05.2008 18:33
Переход на метку нажатием кнопки Макс84 Общие вопросы Delphi 6 04.04.2007 08:59
Как запустить exe-шку нажатием кнопки???? Дамир Помощь студентам 3 04.02.2007 19:24