Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
ВнизЭтот код вешает компьютер : Найти похожие ветки
← →
BugFix (2005-12-11 02:26) [0]
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-11 02:38) [1]Ничего он не вешает, не выдумывай. И, кстати, нечего обманывать компилятор и подсовывать ему дикие числа в качестве даты и времени :)
← →
Джо © (2005-12-11 02:43) [2]Наводка. В типе TDateTime целая часть числа означает кол-во дней, прошедших с 30 декабря 1899. То число, которое ты задаешь, по-моему, намного превышает возраст Вселенной. Давай колись - откуда ты его взял?
;>
← →
BugFix (2005-12-11 02:44) [3]Число было получено через EncodeDateTime(Year, Month, Day, Hour, Min, Sec, MSec);
← →
Джо © (2005-12-11 02:48) [4]
> [3] BugFix (11.12.05 02:44)
> Число было получено через EncodeDateTime(Year, Month, Day,
> Hour, Min, Sec, MSec);
Показывай, как получил.
← →
BugFix (2005-12-12 01:31) [5]Чего, никто не знает как избежать? Перевелись на форуме мастера?
← →
Джо © (2005-12-12 01:47) [6]Пока будешь в партизана играть, вряд ли кто чем поможет. Никому не интересно.
← →
alex_*** © (2005-12-12 09:55) [7]а в чем задача? перевести дикое число в дикую дату?
← →
Sandman29 © (2005-12-12 10:41) [8]Логически мысля, 10 в степени 250 не влезет в Integer :)
Присоединяюсь к Джо © (12.12.05 01:47) [6]
← →
BugFix (2005-12-13 06:32) [9]
> Sandman29 © (12.12.05 10:41) [8]
>
> 10 в степени 250 не влезет в Integer :)
Тогда пусть генерируется эксепшен, а не происходит зависание.
Или дайте функцию типа StrToIntDef.
Кстати, почему TDateTime - это TDateTime = type Double; ?
← →
Джо © (2005-12-13 06:37) [10]Никакого зависания и не происходит. Генерируется EInvalidOp.
> Кстати, почему TDateTime - это TDateTime = type Double;
> ?
Сделай свой компилятор, в котором TDateTime будем чем-то другим. По поводу того, как именно хранится дата/время в переменной этого типа в Делфи см. [2] и стандартную Справку.
> Или дайте функцию типа StrToIntDef.
Это крик души или персональное обращение к кому-либо?
← →
Anatoly Podgoretsky © (2005-12-13 08:48) [11]BugFix (13.12.05 06:32) [9]
После долгих лет иследований в области время, программисты наконец пришли к тому, что это не целое, а таймлайн и решили измерять его в днях, начиная с фиксированой даты.
← →
BugFix (2005-12-14 01:42) [12]
> <Цитата>
>
> Anatoly Podgoretsky © (13.12.05 08:48) [11]
>
> BugFix (13.12.05 06:32) [9]
> После долгих лет иследований в области время, программисты
> наконец пришли к тому, что это не целое, а таймлайн и решили
> измерять его в днях, начиная с фиксированой даты.
>
В результате разбирательства выяснилось, что причина в том, что иногда вместо даты попадается мусор.
Как его можно вычислить и отсечь? Есть какие нибудь функции проверки валидности?
← →
Джо © (2005-12-14 02:03) [13]
> [12] BugFix (14.12.05 01:42)
> В результате разбирательства выяснилось,
Уже не хочется встревать... Я об этом спрашивал еще в [4] посте. Реакция была странной :(
---
Покажешь, наконец, откуда мусор туда попадает? Или [6]?
← →
Сайбель Алексей © (2005-12-14 02:13) [14]2 Джо © [13]
Вас упорно игнорируют и вы даже не обижаетесь :O)
2 BugFix
Совет: ведите диалоги с мастерами. Они не зря что-то српашивают, если вы вообще хотите ответ.
← →
Джо © (2005-12-14 02:29) [15]
> [14] Сайбель Алексей © (14.12.05 02:13)
For the very last time, ну все к черту, все-равно дураком останешься.
← →
Германн © (2005-12-14 02:52) [16]
> Джо © (14.12.05 02:29) [15]
>
>
> > [14] Сайбель Алексей © (14.12.05 02:13)
>
> For the very last time, ну все к черту, все-равно дураком
> останешься.
Раз останешься, два останешься... Глядь и цвет поменялся.
← →
SergP © (2005-12-14 04:48) [17]
> Как его можно вычислить и отсечь? Есть какие нибудь функции
> проверки валидности?
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 04:50) [18]
> [17] SergP © (14.12.05 04:48)
Осталось выявить рамки извращения, но тут даже Ломброзо бессилен :)
← →
BugFix (2005-12-15 01:42) [19]Ну, и чего? Никто не знает размеров?
← →
BugFix (2005-12-15 01:47) [20]Ну, и чего? Никто не знает размеров?
← →
Германн © (2005-12-15 03:30) [21]
> BugFix (15.12.05 01:47) [20]
>
> Ну, и чего? Никто не знает размеров?
Не, ну почему "Никто не знает размеров"?
Я знаю.
Размер обуви - 41. Размер одежды - 48. Размер воротника - 21. Что ещё интересует?
← →
SergP © (2005-12-15 06:47) [22]
> BugFix (15.12.05 01:42) [19]
> Ну, и чего? Никто не знает размеров?
Ты хочешь знать пределы когда начинается
> Этот код вешает компьютер
?
Если да - определи экспериментально например методом дихотомии (делением пополам).
Либо возьми 2 даты которые ты считаешь пределами для твоего случая и не мучайся... Разве тебе нужны такие даты типа 1 января 3526 года?
Ну это конечно если твоя программа не расчитывает дату конца существования вселенной...
← →
BugFix (2005-12-16 01:53) [23]> Если да - определи экспериментально
Пусть определят те, кто утверждают, что у них компьютер якобы не зависает на этом коде.
← →
alex_*** © (2005-12-16 10:03) [24]Пусть определят те, кто утверждают, что у них компьютер якобы не зависает на этом коде.
- им это на фиг не сдалось. Ведь у них комп не повисает....
← →
Плохиш © (2005-12-16 10:41) [25]Ветку пора в "Потрепаться"
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.01;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.012 c