Главная страница
    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;


 
Reindeer Moss Eater ©   (2005-02-02 18:40) [41]

Попробуй If  Ostatok = Time then beep;

Unit

System

Delphi syntax:

type TDateTime = type Double;

Пробовать можно до пенсии.


 
Antonn ©   (2005-02-02 18:57) [42]

Antonn ©   (02.02.05 18:05) [40]
Ой, наговорил там.. :)) Перегрелся



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

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

Наверх




Память: 0.53 MB
Время: 0.036 c
3-1106396865
Светлана
2005-01-22 15:27
2005.02.20
Создание объекта в FastReport


9-1099337514
Colt1978
2004-11-01 22:31
2005.02.20
Задание пути объекту.... (GLScene)


1-1107720491
Layner
2005-02-06 23:08
2005.02.20
Здравствуйте! Посоветуйте плз, как так можно сделать,


4-1104760474
Positive
2005-01-03 16:54
2005.02.20
управление внешним приложением


3-1106230771
Rule
2005-01-20 17:19
2005.02.20
Как можно отменить в ставку в тригере в Фаерберде 1.5





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский