![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Этот код вешает компьютер : [D7]
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]Пока будешь в партизана играть, вряд ли кто чем поможет. Никому не интересно.