Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

Тема: проблема с TDateTime   Найти похожие ветки 

 
msm   (2005-02-02 16:35) [0]

Где ошибка, оно ни фига не бип?

var
 Form1: TForm1;
 Srabotka: TdateTime;
 Ostatok: TdateTime;
 Interval: TdateTime;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Interval:=DateTimePicker1.Time;
Srabotka:=Time + Interval;
Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Ostatok:=Srabotka - Time;
Label1.Caption:=TimeToStr (Ostatok);
If  Srabotka = Time then beep;
end;

end.


 
Reindeer Moss Eater ©   (2005-02-02 16:38) [1]

Или Srabotka <> Time
или таймер не активен
или звука нет
или ты Бетховен.


 
msm   (2005-02-02 16:45) [2]

>Или Srabotka <> Time
>или таймер не активен
>или звука нет
>или ты Бетховен.

Почему Srabotka <> Time - этого то я и не понимаю, в этом и есть суть вопроса.
Таймер активен.
Звук есть.
Я не Бетховен т.к. медведь прошелся по двум ухам одновременно :-)))


 
Reindeer Moss Eater ©   (2005-02-02 16:49) [3]

Почему Srabotka <> Time - этого то я и не понимаю

Они не равны потому что они разные.


 
msm   (2005-02-02 16:54) [4]

А поподробнее можно?
А то получается, что 3<>2 т.к. 3<>2


 
Reindeer Moss Eater ©   (2005-02-02 16:55) [5]

Чего поподробнее?


 
msm   (2005-02-02 16:58) [6]

Почему Srabotka <> Time, хотя Ostatok (Srabotka-Time) = 0:00:00 ?


 
DVM ©   (2005-02-02 16:59) [7]


> Почему Srabotka <> Time - этого то я и не понимаю

не надо полагаться на таймеры.


 
DVM ©   (2005-02-02 17:01) [8]

Ostatok:=Srabotka - Time;
Label1.Caption:=TimeToStr (Ostatok);
If  Srabotka = Time then beep;
Два выделенных Time - по-идее разные Time


 
Reindeer Moss Eater ©   (2005-02-02 17:02) [9]

А причем здесь остаток?

Мой рост + 300 000 км = расстояние до луны.
Почему же я ниже чем луна?
Странно да?

Srabotka:=Time + Interval;
If  Srabotka = Time then beep;


 
DVM ©   (2005-02-02 17:03) [10]

тогда уж
var MyTime ....

....
MyTime:=Time;
Ostatok:=Srabotka - MyTime;
Label1.Caption:=TimeToStr (Ostatok);
If  Srabotka = MyTime then beep;


 
Virgo_Style ©   (2005-02-02 17:04) [11]


> Почему Srabotka <> Time, хотя Ostatok (Srabotka-Time) =
> 0:00:00 ?


Вопрос на сообразительность: равно ли число "пи" 3.1415926?
Ответ - Нет. Где-то в тысячных (десяти-, милионных...) не равно. Как и у тебя.
Проверяй Abs(разность)<точность.


 
Reindeer Moss Eater ©   (2005-02-02 17:04) [12]

Точность здесь не при чем.
Парень запутался в своих переменных.


 
msm   (2005-02-02 17:06) [13]

>Reindeer Moss Eater ©   (02.02.05 17:02) [9]

А для Вас, похоже, procedure TForm1.Button1Click = procedure TForm1.Timer1Timer(Sender: TObject) ?


 
Reindeer Moss Eater ©   (2005-02-02 17:07) [14]

Посмотри внимательно на свой код, а про это будешь потом думать.


 
Johnmen ©   (2005-02-02 17:10) [15]

Всё от того, что в DateTimePicker1.Time лежит и время и дата, и => дальнейшие действия приобретают другой оттенок...:)


 
Reindeer Moss Eater ©   (2005-02-02 17:10) [16]

Ostatok:=Srabotka - Time;
Label1.Caption:=TimeToStr (Ostatok);
If  Srabotka = Time then beep;


В первой строке Time имеет одно значение.
А в третьей - совсем другое.


 
msm   (2005-02-02 17:13) [17]

>Johnmen ©   (02.02.05 17:10) [15]
Полностью согласен, а как быть в такой ситуации?


 
msm   (2005-02-02 17:14) [18]

>DVM ©   (02.02.05 17:03) [10]
Не помогает, пробовал.


 
Reindeer Moss Eater ©   (2005-02-02 17:15) [19]

Применить вместо знака равно знак меньше или равно


 
ALS ©   (2005-02-02 17:15) [20]


Ostatok := Srabotka - Time;
Label1.Caption:=TimeToStr (Ostatok);
If Ostatok <= 0 then
begin
 Timer1.Enabled := False;
 beep;
end;


 
Reindeer Moss Eater ©   (2005-02-02 17:17) [21]

А посмотреть что там в переменной на момент проверки и хлопнуть себя по лбу - это не для нас.


 
Jay1982 ©   (2005-02-02 17:18) [22]

ALS ©   (02.02.05 17:15) [20]
Только не нуля ж меньше, а скажем 0.01


 
msm   (2005-02-02 17:22) [23]

>ALS ©   (02.02.05 17:15) [20]
И этот вариант  тоже ни фига не бип.


 
Jay1982 ©   (2005-02-02 17:26) [24]

См. [20]
Трассировщик это круто :)


 
Jay1982 ©   (2005-02-02 17:26) [25]

См. [21]
Трассировщик это круто :)


 
msm   (2005-02-02 17:32) [26]

Кстати, остаток <= 0 не получается.
В данной ситуации 0:00:02 ... 0:00:01 ... 0:00:00 ... 23:59:59


 
Reindeer Moss Eater ©   (2005-02-02 17:32) [27]

И этот вариант  тоже ни фига не бип.
Это судьба.


 
Reindeer Moss Eater ©   (2005-02-02 17:33) [28]

В данной ситуации 0:00:02 ... 0:00:01 ... 0:00:00 ... 23:59:59

У тебя же переменные TDateTime
Что ты уперся в один элемент времени?


 
ALS ©   (2005-02-02 17:37) [29]

Interval:=Frac(DateTimePicker1.Time);


 
Antonn ©   (2005-02-02 17:38) [30]

msm   (02.02.05 16:35)
Interval:=DateTimePicker1.Time;
Srabotka:=Time + Interval;
Timer1.Enabled:=True;

Reindeer Moss Eater ©   (02.02.05 17:33) [28]
У тебя же переменные TDateTime
Что ты уперся в один элемент времени?

Чему равен Interval?


 
msm   (2005-02-02 17:42) [31]

Например, Interval=0:10:00


 
Reindeer Moss Eater ©   (2005-02-02 17:44) [32]

Это надолго.


 
DVM ©   (2005-02-02 17:46) [33]


> msm   (02.02.05 17:42) [31]

надо Interval=10:00:00
утро вечера мудренее :)


 
msm   (2005-02-02 17:47) [34]

>DVM ©   (02.02.05 17:46) [33]
Похоже на то ...


 
msm   (2005-02-02 17:48) [35]

>ALS ©   (02.02.05 17:37) [29]
Тогда получается 0:00:02 ... 0:00:01 ... 0:00:00 ... 00:00:01


 
Reindeer Moss Eater ©   (2005-02-02 17:51) [36]

ShowMessage(FormatDateTime("dd.mm.yyyy hh:nn:ss:zzz",Srabotka)+#13#10+
FormatDateTime("dd.mm.yyyy hh:nn:ss:zzz",Time));

А так же вспомнить, что TDateTime это Double и вспомнить про знак строгого равенства при операциях с Double.


 
Reindeer Moss Eater ©   (2005-02-02 17:52) [37]

... И не парить здесь мозги окружающим


 
msm   (2005-02-02 17:57) [38]

>Reindeer Moss Eater ©   (02.02.05 17:52) [37]
Я преклоняюсь перед Вашим профессионализмом программиста и интеллигентностью Вашего общения.


 
Reindeer Moss Eater ©   (2005-02-02 17:59) [39]

Лучше б ты думал, а не преклонялся.


 
Antonn ©   (2005-02-02 18:05) [40]

msm   (02.02.05 17:42) [31]
Например, Interval=0:10:00

А дата? Ты прибавляешь время ко времени, а дата по умолчанию равна 1.1.1899(поправьте, если ошибаюсь). Как задается Ostatok?

If  Srabotka = Time then beep; У тебя Srabotka=Time+***. Услови ни как не будет выполнятся. Попробуй If  Ostatok = Time then beep;



Страницы: 1 2 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.051 c
1-1107429652
ТехникПТО
2005-02-03 14:20
2005.02.20
Вырезание из строки


9-1100346095
Zak3D[@Tm]
2004-11-13 14:41
2005.02.20
Direct3D - Проблема потерянных устройств.


4-1104108081
XProger
2004-12-27 03:41
2005.02.20
Две мышки


4-1105102145
Lucifer
2005-01-07 15:49
2005.02.20
Горячие клавиши


1-1107339172
Imp
2005-02-02 13:12
2005.02.20
статья: Написание оптимального кода под Delphi