|
Нулевая дата
|
|||
---|---|---|---|
#18+
Есть функция: Код: pascal 1. 2. 3. 4. 5. 6.
В коде программы вызывается эта функция, и в нее передается переменная, которая не инициализирована, соответственно, там нулевая дата (30.12.1899), это же подтверждается при трассировке. Однако внутри функции выполнение идет по первой ветке. Хотя при наводке мыши на AStatusTime отображается 30.12.1899. Почему так?? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 11:28 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
потому что сравнение вещественных чисел ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 11:39 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
DimaBr потому что сравнение вещественных чисел Т.е. один раз оно может совпасть, а в другой раз не совпасть, и непредсказуемо, когда это случится? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 11:48 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
svnvlad DimaBr потому что сравнение вещественных чисел Т.е. один раз оно может совпасть, а в другой раз не совпасть, и непредсказуемо, когда это случится? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 11:54 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
YuRock svnvlad пропущено... Т.е. один раз оно может совпасть, а в другой раз не совпасть, и непредсказуемо, когда это случится? Там не мусор, трассировка показывает 30.12.1899 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 12:19 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
svnvlad Там не мусор, трассировка показывает 30.12.1899 Это не означает, что там 0. Сделай побайтовый дамп, удивишься. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 12:42 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Ну у меня не совсем НОЛЬ ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 12:44 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
svnvlad YuRock пропущено... Когда у тебя в стеке ненулевой мусор будет, где переменная объявлена - тогда и не совпадёт. Тут дело не в сравнении вещественных. Ноль хорошо сравнивается обычно. Там не мусор, трассировка показывает 30.12.1899 Это значит, что иногда ноль, а иногда - и не ноль, или не совсем ноль. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 12:55 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
svnvlad переменная, которая не инициализирована, соответственно, там нулевая дата DimaBr потому что сравнение вещественных чисел Код: pascal 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 14:43 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
_Vasilisk_ Нет. В переменной, которая не инициализирована лежит любой мусор Если переменная глобальная - она автоматически инициализируется нулем. То же самое, если переменная - поле класса, в его конструкторе поля инициализируются нулями. Если локальная, то да, неизвестно, что там. Так что тут смотря какая переменная, может быть, что как раз у ТС в сравнении чисел с плавающей запятой дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2022, 15:39 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
_Vasilisk_ svnvlad переменная, которая не инициализирована, соответственно, там нулевая дата DimaBr потому что сравнение вещественных чисел Код: pascal 1.
А что за значение DATE_NULL? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 01:02 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
svnvlad А что за значение DATE_NULL? Код: pascal 1. 2. 3. 4. 5.
Т.е. никаких значений по умолчанию. Все присваивается явно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 11:08 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
_Vasilisk_ Не помню. Или 0, или -1. Оба значения странные, мягко говоря. Вообще, нулевая дата это (-DateDelta); ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 13:50 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Kazantsev Alexey _Vasilisk_ Не помню. Или 0, или -1. Оба значения странные, мягко говоря. Вообще, нулевая дата это (-DateDelta); Тут ноль подходит вполне. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:02 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
YuRock Ну так требуется же не нулевая дата, а незаполненная (неизвестная) дата. Отлично. Почему бы для этой цели не использовать корректное значение нулевой даты? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:07 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Kazantsev Alexey YuRock Ну так требуется же не нулевая дата, а незаполненная (неизвестная) дата. Отлично. Почему бы для этой цели не использовать корректное значение нулевой даты? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 14:59 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
YuRock Может, потому, что нулевая дата - это корректное значение даты? Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 15:05 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Kazantsev Alexey YuRock Может, потому, что нулевая дата - это корректное значение даты? Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 15:24 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
DimaBr, это творчество ДевиантАрта, а не Борманда. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 16:13 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Мимопроходящий DimaBr, это творчество ДевиантАрта, а не Борманда. Да я вроде в курсе, специально сделал скрин, чтобы было видно название модуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2022, 22:55 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
s62Если переменная глобальная - она автоматически инициализируется нулем. совершенно ни к чему быть столь самоуверенным. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 16:50 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
kdv совершенно ни к чему быть столь самоуверенным. Да, нужно просто читать доку: https://docwiki.embarcadero.com/RADStudio/Rio/en/Variables_(Delphi) If you do not explicitly initialize a global variable, the compiler initializes it to 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:29 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Kazantsev Alexey, лучше перебдеть. Тем более что не всем глобальным переменным нужен 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:49 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
kdv> Тем более что не всем глобальным переменным нужен 0. C этого места поподробнее. Каким нужен не 0? И если не 0, то что 42 или -1 или что? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 17:58 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
kdv лучше перебдеть. Предлагаю и значение присваивать дважды, чтобы уж наверняка. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 18:05 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам kdv> Тем более что не всем глобальным переменным нужен 0. C этого места поподробнее. Каким нужен не 0? И если не 0, то что 42 или -1 или что? Полагаю, что имелось ввиду, что некоторым глобальным переменным устанавливаются иные значения инициализации. Например Код: pascal 1. 2. 3. 4.
Ну и чтобы в общем стиле всё выглядело, и для наглядности, и нули для тех, кому ноль нужен, тоже можно ставить, и будет красиво. Тем более, я уверен, что это оптимизируется, и при установке нуля просто ничего не происходит (хотя не проверял, но это выглядит простым и логичным). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 18:51 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Kazantsev Alexey kdv лучше перебдеть. Предлагаю и значение присваивать дважды, чтобы уж наверняка. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 20:25 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
bk0010> В Lotus Notes так приходилось делать иногда. Серьёзно? А почему, баг / фича? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 22:09 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
DimaBr Так что в итоге, инициализировать D := 0 или D := NullDate, что на самом деле -700000? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 22:11 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Серьёзно? А почему, баг / фича? На счёт лотуса не скажу, но вот при работе с аппаратурой напрямую иногда приходилось запись в ячейку зацикливать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 22:19 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
svnvlad DimaBr Так что в итоге, инициализировать D := 0 или D := NullDate, что на самом деле -700000? НОЛЬ, не означает Null. Например Date()-Date()=0 а не отсутствие даты. Разработчики Девок выбрали для понятия NullDate значение -700000, лично вы может выбрать своё значение, причём ЛЮБОЕ. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 22:30 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
kdv лучше перебдеть. Лучше писать хорошо. А хорошо - это коротко, чётко и без лишней воды. YuRock Тем более, я уверен, что это оптимизируется, и при установке нуля просто ничего не происходит (хотя не проверял, но это выглядит простым и логичным). Там нечего оптимизировать. Можно ставить ноль, можно ставить не ноль, можно не ставить ноль - во всех случаях одинаково ничего не происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 23:26 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
YuRock Тем более, я уверен, что это оптимизируется, и при установке нуля просто ничего не происходит (хотя не проверял, но это выглядит простым и логичным). Логично, но не так. В других компиляторах - возможно, но Delphi компилятору всё равно: 1. Если переменная не инициализируется в коде, то компилятор помещает её в секцию ZERO_INIT - она не занимает места в .exe файле, а при загрузке в память выделяется инициализированный нулями регион памяти. 2. Если переменная инициализируется в коде любым значением (ноль/не ноль - не важно), то компилятор помещает её в read-write секцию с заданными значениями, которая хранится в .exe файле "как есть", а при загрузке в память копируется. Соответственно, разница между G1: Integer = 0 и G1: Integer = 1 только в том, что будет сохранено в секцию .exe файла, но сама структура останется одинаковой. В то время как разница между G1: Integer и G1: Integer = 0 существенна - эти переменные хранятся в разных секциях. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2022, 23:52 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
GunSmoker YuRock Тем более, я уверен, что это оптимизируется, и при установке нуля просто ничего не происходит (хотя не проверял, но это выглядит простым и логичным). Логично, но не так. В других компиляторах - возможно, но Delphi компилятору всё равно: 1. Если переменная не инициализируется в коде, то компилятор помещает её в секцию ZERO_INIT - она не занимает места в .exe файле, а при загрузке в память выделяется инициализированный нулями регион памяти. 2. Если переменная инициализируется в коде любым значением (ноль/не ноль - не важно), то компилятор помещает её в read-write секцию с заданными значениями, которая хранится в .exe файле "как есть", а при загрузке в память копируется. Соответственно, разница между G1: Integer = 0 и G1: Integer = 1 только в том, что будет сохранено в секцию .exe файла, но сама структура останется одинаковой. В то время как разница между G1: Integer и G1: Integer = 0 существенна - эти переменные хранятся в разных секциях. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 00:16 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам bk0010> В Lotus Notes так приходилось делать иногда. Серьёзно? А почему, баг / фича? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2022, 17:05 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Kazantsev Alexey _Vasilisk_ Не помню. Или 0, или -1. Оба значения странные, мягко говоря. Вообще, нулевая дата это (-DateDelta); Дата, как непрерывная величина в обе стороны от нуля, любое значение теоретически имеет допустимым. Другое дело, что, к примеру, даты до предполагаемого образования Земли не имеют практического смысла и мб использованы как магическое значение "NULL". Или же это мб нижняя граница Double, для простоты только целая часть. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 12:06 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal любое значение теоретически имеет допустимым Нам не нужно теоретически, у нас есть вполне конкретные рамки обозначенные для TDateTime. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 12:37 |
|
Нулевая дата
|
|||
---|---|---|---|
#18+
Kazantsev Alexey Fr0sT-Brutal любое значение теоретически имеет допустимым Нам не нужно теоретически, у нас есть вполне конкретные рамки обозначенные для TDateTime. А, они лимит искусственно ввели The maximal correct date supported by TDateTime values is limited to 12/31/9999 23:59:59:999 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2022, 13:51 |
|
|
start [/forum/topic.php?all=1&fid=58&tid=2036617]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
27ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 160ms |
0 / 0 |