Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

корректна ли ответственная строка кода? [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 не хороший вариант ИМХО


Наверх

Титульная страница Поиск, карта сайта Написать письмо