
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.86] |
![]() |
|
Страницы: (19) « Первая ... 14 15 [16] 17 18 ... Последняя » все ( Перейти к последнему сообщению ) |
Прикр. сообщ.
#1
,
|
|
|
![]() |
Сообщ.
#226
,
|
|
Согласен, реально достали уже
![]() |
![]() |
Сообщ.
#227
,
|
|
![]() |
Сообщ.
#228
,
|
|
Embarcadero RAD Studio 10.1 Berlin
ISO (7 GB): http://altd.embarcadero.com/download/radst...builder10_1.iso What's New Bug fix list Краткий обзор на хабре: Релиз RAD Studio 10.1 Berlin (Delphi, C++Builder) |
Сообщ.
#229
,
|
|
|
Долго думал, куда отправить этот крик души, наверно, все-таки в новости, ибо вызвано сменой кодовой базы.
Глянул я вчера исходник элементарного IncDay и погрузился в охреневающий ужас... ![]() ![]() function IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1): TDateTime; begin Result := IncHour(AValue, ANumberOfDays * HoursPerDay); end; function IncHour(const AValue: TDateTime; const ANumberOfHours: Int64 = 1): TDateTime; begin Result := IncMinute(AValue, ANumberOfHours * MinsPerHour); end; function IncMinute(const AValue: TDateTime; const ANumberOfMinutes: Int64 = 1): TDateTime; begin Result := IncSecond(AValue, ANumberOfMinutes * MinsPerHour); end; function IncSecond(const AValue: TDateTime; const ANumberOfSeconds: Int64 = 1): TDateTime; begin Result := IncMilliSecond(Avalue, ANumberOfSeconds * MSecsPerSec); end; function IncMilliSecond(const AValue: TDateTime; const ANumberOfMilliSeconds: Int64 = 1): TDateTime; var TS: TTimeStamp; TempTime: Comp; begin TS := DateTimeToTimeStamp(AValue); TempTime := TimeStampToMSecs(TS); TempTime := TempTime + ANumberOfMilliSeconds; TS := MSecsToTimeStamp(TempTime); Result := TimeStampToDateTime(TS); end; И это я еще не привел функции 1) DateTimeToTimeStamp 2) TimeStampToMSecs 3) MSecsToTimeStamp 4) TimeStampToDateTime Полез в D7, чтобы убедиться, что не страдаю воспоминаниями из параллельной реальности ![]() ![]() function IncDay(const AValue: TDateTime; const ANumberOfDays: Integer): TDateTime; begin Result := AValue + ANumberOfDays; end; Спрашивается, на хрена такие "обновления"? |
Сообщ.
#230
,
|
|
|
Цитата Fr0sT @ Быть может готовятся, что TDateTime будет не просто Double, которой нет на каких-нибудь ARM'ах (или ещё где), а какой-то более универсальной структурой/классом. Спрашивается, на хрена такие "обновления"? ![]() Ну и "метод чайника" весьма надёжен. ![]() П.С. а так - да, кошмарно выглядит, на первый взгляд. |
Сообщ.
#231
,
|
|
|
Всё может быть, и мультиплатформенность требует жертв. Почему, однако, у FPC такой проблемы нет, а ведь он компилится под ARM? Ну и в конце концов, зачем делать настолько длинную цепочку вызовов, множа imul-ы (не говоря уже о том, что у меня почему-то эти функции не инлайнятся, в результате чего на asm код вообще лучше не смотреть), почему бы не умножать сразу на нужную величину? Загадка.
|
![]() |
Сообщ.
#232
,
|
|
Цитата Fr0sT @ Спрашивается, на хрена такие "обновления"? IncDay из D7 может пропустить неверную дату а обновлённая, кинет исключение |
Сообщ.
#233
,
|
|
|
Shaggy, а что есть "неверная дата"? Для tdatetime это 01/01/0100, для timestamp - 01/01/0000, но это просто условности, и если не брать во внимание сопутствующие функции, то сами по себе типы прекрасно обработают отрицательные значения.
Кроме того, ничто не мешало и у tdatetime сравнивать с нижним пределом. |
Сообщ.
#234
,
|
|
|
Fr0sT
Дельфи морально устарел. Есть международный стандарт выпущенный ещё до Delphi. Но уже отменяющий TimeStamp. Наши его перевели в ГОСТ ИСО 8601-2001. Но разработчики Delphi озаботились только сейчас. Так вот в дате есть весокосные года 29 февраля. Есть системы дата-время где есть високосные часы минуты и секунды. Они же дополнительные секунды. Есть ещё и доп минуты и доп часы Смотрите там часы от 00 до 24 минуты от 00 до 60. |
Сообщ.
#235
,
|
|
|
Pavia, и какое представление современно?
|
![]() |
Сообщ.
#236
,
|
|
Цитата Fr0sT @ Глянул я вчера исходник элементарного IncDay и погрузился в охреневающий ужас... Код того же boost'а не видел? ![]() |
Сообщ.
#237
,
|
|
|
Krid, буст известный мастодонт, я туда и не лезу - это все сиплюсплюсные дела. А вот в RTL такой подставы не ожидал...
|
![]() |
Сообщ.
#238
,
|
|
Цитата Fr0sT @ А вот в RTL такой подставы никто не ожидал... Согласен ![]() Просто они хотят одинаковую базу кода подвести для всех платформ. Если серьёзно, то этот код Delphi ничем не отличается от кода Microsoft'а. |
Сообщ.
#239
,
|
|
|
Цитата Fr0sT @ Глянул я вчера исходник элементарного IncDay и погрузился в охреневающий ужас... ... Спрашивается, на хрена такие "обновления"? Элементарного IncDay? ![]() Вот для затравки: «Never say never» или Работаем с таймзонами правильно Что же всё-таки не так со структурой DateTime? Очень рад, что у Delphi-команды дошли руки и до этого. Ибо в Delphi RTL было дофигища подобных naive implementation для "элементарных" вещей. Скажем, то же округление - далеко не сразу появились Floor/Ceiling/etc, поэтому в старых проектах часто приходилось рисовать "своё" округление для верной работы дробей. |
Сообщ.
#240
,
|
|
|
Цитата Mr.Delphist @ Вот для затравки: «Never say never» или Работаем с таймзонами правильно Что же всё-таки не так со структурой DateTime? Как все это соотносится с TDateTime? |