![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
корректна ли ответственная строка кода? [D6, XP]
brother © (2008-05-20 11:59:00)написал программу, вот и задумался, не возникнит ли какого либо глюка
при выполнении данного кода:
if strtoint(h)>=strtoint(h2)
где h:=FormatDateTime('hh', now) - постоянно вертится в таймере интервалом в минуту
h2- из ini
Скажу, что если их хранить в integer, то это много кода править и вызовов inttostr будет больше нежели 2 вызова strtoint..
Подскажите, а то в случае сбоя придется на работу вечером ехать... а так не хочется)
han_malign (2008-05-21 08:47:00) [1]
> FormatDateTime(' hh', now)
- если все строки дополнены до двух символов нулем - то может тогда проще строки сравнивать? :))
brother (2008-05-21 05:42:00) [2]
> если в ини просочится '23', то блок if cможет сработать
> только с 23:00 до 23:59.если вчера запустили в 21.00, а
> сегодня в 20.59, то опять блок не сработает
> она страртует максимум в 21
ЮЮ (2008-05-21 04:41:00) [3]> да и при чем тут это? О_о
а причем тут
if strtoint(h)>=strtoint(h2)
особеноо при
работает около 10мин и закрывается до следующего дня
если в ини просочится '23', то блок if cможет сработать только с 23:00 до 23:59.
если вчера запустили в 21.00, а сегодня в 20.59, то опять блок не сработает
brother (2008-05-20 12:39:00) [4]
> она и сутки не протянет, т.к. после '23' идет '00' :)
да и при чем тут это? О_о
brother (2008-05-20 12:35:00) [5]
> она и сутки не протянет, т.к. после '23' идет '00' :)
гы... слава богу она страртует максимум в 21, работает около 10мин и закрывается до следующего дня... Старутет ее кто? а не важно))))
ЮЮ (2008-05-20 12:31:00) [6]> эта прога только на месяц
она и сутки не протянет, т.к. после '23' идет '00' :)
brother (2008-05-20 12:26:00) [7]в итоге... все числа потом где-нибудь да показываются в тексте.
но если затычек с исходным кодом не будет, то видимо так и оставлю... тк эта прога только на месяц
> Точнее, Trunc(Frac(Now) * 24)
приму к сведению на будущее...
brother (2008-05-20 12:23:00) [8]
> 1. Зачем делать strtoint(h2) каждый раз, если это можно
> сделать один раз (при чтении ini) и запомнить?
там не то, чтобы это хранится...
case pressa_id of
1: h2:=kop_time;
2: h2:=smn_time;
3: h2:=ptn_time;
end;
kop_time; smn_time; ptn_time; хранятся в ини
> 2. Зачем переводить число в строку, а потом обратно в число?
а потом постоянно caption:=inttostr(Trunc(Frac(Now) * 24)) лучше?
Юрий Зотов (2008-05-20 12:16:00) [9]Точнее, Trunc(Frac(Now) * 24)
brother (2008-05-20 12:15:00) [10]
> trystrtoint
может и лучше, но h и h2 100% корректно числа строкой
Юрий Зотов (2008-05-20 12:14:00) [11]Раз в минуту - это ерунда, на оптимальность можно не обращать внимания.
А вообще - плохой код, конечно. Даже очень плохой. Хотя и рабочий.
1. Зачем делать strtoint(h2) каждый раз, если это можно сделать один раз (при чтении ini) и запомнить?
2. Зачем переводить число в строку, а потом обратно в число? Это очень затратные операции. Целое количество часов можно получить при помощи чистой арифметики, что намного оптимальнее:
Int(Frac(Now) * 24)
Stas (2008-05-20 12:12:00) [12]мож лучше trystrtoint
brother (2008-05-20 12:07:00) [13]да
Умище (2008-05-20 12:06:00) [14]С какой целью это делается? Проверить 2 числа или определить более позднее/раннее время?
brother (2008-05-20 12:01:00) [15]скажу сразу, что if h=h2 не хороший вариант ИМХО