Главная страница
    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.53 MB
Время: 0.034 c
3-1106230095
Lord Zmiy
2005-01-20 17:08
2005.02.20
странная ошибка


3-1106545295
Layner
2005-01-24 08:41
2005.02.20
Мастера, посоветуйте, как расшифровать выборку на клиенте


1-1107467537
griban
2005-02-04 00:52
2005.02.20
Zapusk makrosa Excel iz Delphi


1-1107357716
Zuzya Penkin
2005-02-02 18:21
2005.02.20
Подсветка синтаксиса


1-1107120746
Homa_Programer
2005-01-31 00:32
2005.02.20
как правильно создать в run-time TabSheet и на нем RichEdit?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский