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

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

Этот код вешает компьютер : [D7]


Страницы:   1 2

BugFix ©   (2005-12-11 02:26:00) 

procedure TForm1.Button1Click(Sender: TObject);
var
 d1 : Double;
 Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
 d1 := 4.9099444267E+252;
 DecodeDateTime(d1, Year, Month, Day, Hour, Min, Sec, MSec);
 Caption := IntToStr(Year);
end;


Вопрос: как избежать?
Может есть какая другая функция DecodeDateTime ?


Плохиш   (2005-12-16 10:41:00) [1]

Ветку пора в "Потрепаться"


alex_***   (2005-12-16 10:03:00) [2]

Пусть определят те, кто утверждают, что у них компьютер якобы не зависает на этом коде.
- им это на фиг не сдалось. Ведь у них комп не повисает....


BugFix   (2005-12-16 01:53:00) [3]

> Если да - определи экспериментально

Пусть определят те, кто утверждают, что у них компьютер якобы не зависает на этом коде.


SergP   (2005-12-15 06:47:00) [4]


> BugFix   (15.12.05 01:42) [19]
> Ну, и чего? Никто не знает размеров?


Ты хочешь знать пределы когда начинается

>  Этот код вешает компьютер


?

Если да - определи экспериментально например методом дихотомии (делением пополам).

Либо возьми 2 даты которые ты считаешь пределами для твоего случая и не мучайся... Разве тебе нужны такие даты типа 1 января 3526 года?
Ну это конечно если твоя программа не расчитывает дату конца существования вселенной...


Германн   (2005-12-15 03:30:00) [5]


> BugFix   (15.12.05 01:47) [20]
>
> Ну, и чего? Никто не знает размеров?


Не, ну почему "Никто не знает размеров"?
Я знаю.
Размер обуви - 41. Размер одежды - 48. Размер воротника - 21. Что ещё интересует?


BugFix   (2005-12-15 01:47:00) [6]

Ну, и чего? Никто не знает размеров?


BugFix   (2005-12-15 01:42:00) [7]

Ну, и чего? Никто не знает размеров?


Джо   (2005-12-14 04:50:00) [8]


>  [17] SergP ©   (14.12.05 04:48)

Осталось выявить рамки извращения, но тут даже Ломброзо бессилен :)


SergP   (2005-12-14 04:48:00) [9]


> Как его можно вычислить и отсечь? Есть какие нибудь функции
> проверки валидности?



procedure TForm1.Button1Click(Sender: TObject);
var
 d1 : Double;
 Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
 d1 := 4.9099444267E+252;

 if (d1<...) and (d1>...) then
 begin
 DecodeDateTime(d1, Year, Month, Day, Hour, Min, Sec, MSec);
 Caption := IntToStr(Year);
 end else Caption := 'Это не дата, а извращение';

end;


Германн   (2005-12-14 02:52:00) [10]


> Джо ©   (14.12.05 02:29) [15]
>
>
> > [14] Сайбель Алексей ©   (14.12.05 02:13)
>
> For the very last time, ну все к черту, все-равно дураком
> останешься.


Раз останешься, два останешься... Глядь и цвет поменялся.


Джо   (2005-12-14 02:29:00) [11]


> [14] Сайбель Алексей ©   (14.12.05 02:13)

For the very last time, ну все к черту, все-равно дураком останешься.


Сайбель Алексей   (2005-12-14 02:13:00) [12]

2 Джо © [13]
Вас упорно игнорируют и вы даже не обижаетесь :O)

2 BugFix
Совет: ведите диалоги с мастерами. Они не зря что-то српашивают, если вы вообще хотите ответ.


Джо   (2005-12-14 02:03:00) [13]


>  [12] BugFix   (14.12.05 01:42)
> В результате разбирательства выяснилось,

Уже не хочется встревать... Я об этом спрашивал еще в [4] посте. Реакция была странной :(
---
Покажешь, наконец, откуда мусор туда попадает? Или [6]?


BugFix   (2005-12-14 01:42:00) [14]


> <Цитата>
>
> Anatoly Podgoretsky ©   (13.12.05 08:48) [11]
>
> BugFix   (13.12.05 06:32) [9]
> После долгих лет иследований в области время, программисты
> наконец пришли к тому, что это не целое, а таймлайн и решили
> измерять его в днях, начиная с фиксированой даты.
>


В результате разбирательства выяснилось, что причина в том, что иногда вместо даты попадается мусор.

Как его можно вычислить и отсечь? Есть какие нибудь функции проверки валидности?


Anatoly Podgoretsky   (2005-12-13 08:48:00) [15]

BugFix   (13.12.05 06:32) [9]
После долгих лет иследований в области время, программисты наконец пришли к тому, что это не целое, а таймлайн и решили измерять его в днях, начиная с фиксированой даты.


Джо   (2005-12-13 06:37:00) [16]

Никакого зависания и не происходит. Генерируется EInvalidOp.

> Кстати, почему TDateTime - это TDateTime = type Double;
> ?

Сделай свой компилятор, в котором TDateTime будем чем-то другим. По поводу того, как именно хранится дата/время в переменной этого типа в Делфи см. [2] и стандартную Справку.

> Или дайте функцию типа StrToIntDef.

Это крик души или персональное обращение к кому-либо?


BugFix   (2005-12-13 06:32:00) [17]


> Sandman29 ©   (12.12.05 10:41) [8]
>
> 10 в степени 250 не влезет в Integer :)


Тогда пусть генерируется эксепшен, а не происходит зависание.
Или дайте функцию типа StrToIntDef.

Кстати, почему TDateTime - это TDateTime = type Double; ?


Sandman29   (2005-12-12 10:41:00) [18]

Логически мысля, 10 в степени 250 не влезет в Integer :)
Присоединяюсь к Джо ©   (12.12.05 01:47) [6]


alex_***   (2005-12-12 09:55:00) [19]

а в чем задача? перевести дикое число в дикую дату?


Джо   (2005-12-12 01:47:00) [20]

Пока будешь в партизана играть, вряд ли кто чем поможет. Никому не интересно.


Страницы:   1 2

Наверх

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