Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.04;
Скачать: CL | DM;

Вниз

2 dates to 1   Найти похожие ветки 

 
race1 ©   (2003-08-17 15:41) [0]

у меня есть две даты, не строчки, а цифры (TDateTime). Можно как-нибудь эти ДВЕ цифры соединить в одну, ибо так хранить удобнее.

Не строчки конкатить и разбивать потом, а именно цифры соединить.


 
Anatoly Podgoretsky ©   (2003-08-17 15:43) [1]

d1+d2


 
VID ©   (2003-08-17 15:47) [2]

to Anatoly: а разбивать как будешь ?
to race1: похоже что никак... сам прикинь, откуда потом "дешифратору" взять инфу для разбиения суммы ?
всё таки придётся хранить в виде строки... причём d1+"@"+d2, т.е. ещё и использовать какой-нить разделитель


 
race1 ©   (2003-08-17 16:02) [3]

жалко, конечно :( ну да ладно


 
app ©   (2003-08-17 16:15) [4]

VID © (17.08.03 15:47) [2]
А как ты думаешь после c := a + b = 12
можно сказать чему равно a или b?
Зачем в виде строки, лучше

DoubleDate = record
left: TDateTime;
right: TDateTime;
end;


 
VID ©   (2003-08-17 19:20) [5]

to app: один из нас чего то недопонимает: либо я, либо ты.
человеку надо хранить d1+d2 в виде какого-то double(float) числа, с возможностью впоследствии снова разложить это число на d1 и d2 что бы новые d1 и d2 соотвествовали старым d1 и d2.
а ты предлагаешь создать новый тип = record и где тут ОДНО Double(float) число получается ?


 
Anatoly Podgoretsky ©   (2003-08-17 19:27) [6]

Я показал как хранить, но из суммы не возможно выделить состовляюшии. А в TDateTime можно хранить только сумму, или надо два TDateTime, чудес то не бывает. Я что зря приводил формулу, если ты знаешь как это сделать в однои TDateTime то поделись с общественностью.


 
Просто случайный   (2003-08-17 19:47) [7]

2 race1 © (17.08.03 15:41)
Расскажи нам бестолковым, сколько байт (или бит) ты хочешь съэкономить, откуда растут ноги этой проблемы. Иначе вряд ли кто-то ответит.


 
Anatoly Podgoretsky ©   (2003-08-17 20:02) [8]

А какая разнича, сколько съэкономит, ну хочет хранить 2 dates to 1 ну и пусть, но только пусть не спрашивает как разделить эту сумму.


 
Просто случайный   (2003-08-17 20:05) [9]

2 Anatoly Podgoretsky © (17.08.03 20:02) [8]
Полностью согдласен, но зачем засорять форум?


 
Anatoly Podgoretsky ©   (2003-08-17 20:11) [10]

Просто случайный (17.08.03 20:05) [9]
Ну так начни с себя или ты про race1, но все равно это его право задать вопрос в той форме, в какой он хочет, пока не нарушает правила. Ну а у нас тоже право на ответы, в любой форме с теми же ограничениями. Или тебе надо подтверждение от модератора?


 
VID ©   (2003-08-17 20:41) [11]

to Anatoly: ты просто не понял вопроса...


 
Anatoly Podgoretsky ©   (2003-08-17 20:49) [12]

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


 
VID ©   (2003-08-17 21:02) [13]

to Anatoly: просто он хотел что бы была потом ещё возможность разбить сумму(или точнее склейку), на исходные части...
ладно, тут уже не о чем говорить...


 
Polevi ©   (2003-08-17 21:07) [14]

если только даты тогда MAKELONG, HIWORD, LOWORD


 
Anatoly Podgoretsky ©   (2003-08-17 21:09) [15]

VID © (17.08.03 21:02) [13]
Для этого было предложено хранить эти два как одно целое, например
Polevi © (17.08.03 21:07) [14] или
app © (17.08.03 16:15) [4] или
VID © (17.08.03 15:47) [2]


 
uw ©   (2003-08-18 09:19) [16]

В году примерно Pi*10^7 секунд, поэтому в 4 байта влезет больше 136 лет. Пересчитай свои даты в секунды от 2000-го года, скажем. Первую дату положи в первые 4 байта TDateTime, вторуе – во вторые. И если точности до 1 секунды хватает, то будет тебе счастье на ближайшие 130 лет! Если же нужна бОльшая точность, то и счастье будет покороче. Но так уже лет 30 никто не делает.


 
Anatoly Podgoretsky ©   (2003-08-18 09:27) [17]

Но так уже лет 136 никто не делает. А те кто делал пострадали в 2000 году.


 
uw ©   (2003-08-18 09:37) [18]

Пострадали те, кто брали не 2000-й, а 1812-й.


 
Ketmar ©   (2003-08-18 09:37) [19]

>#5
если уж на то пошло, вопрос некорректен. сирець неверен. TDateTime представляет ЧИСЛО, но никак не ЦИФРУ. ы?


 
vopros ©   (2003-08-18 11:08) [20]

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


 
Delirium ©   (2003-08-18 12:26) [21]

TDateTime, число с 15-ю знаками, т.е. Double, таким образом 2 даты - 30 знаков, а Extended - всего-то 19 знаков. Вывод - без потерь не склеить.


 
nikkie ©   (2003-08-18 15:05) [22]

ну давайте и я версию предложу. :))
если речь о датах, то это целые числа. запихиваем в TDateTime = double по формуле date1 + 1/date2.

>ибо так хранить удобнее
надо же...


 
alxx ©   (2003-08-18 15:12) [23]

туда:

DD := trunc(D1)+(trunc(D2) shl 16);

обратно:

D1 := trunc(DD) and $0000FFFF;
D2 := trunc(DD) shr 16;

еще на пару тысяч лет хватит


 
ZrenBy ©   (2003-08-18 15:13) [24]

преобразовать с потерей точности в smalldatetime - 4 байта

потом Polevi © (17.08.03 21:07) [14]


 
alxx ©   (2003-08-18 15:15) [25]

А вообще нужно различать поняти числа и цифры :)



Страницы: 1 вся ветка

Текущий архив: 2003.09.04;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.024 c
1-10682
ossa
2003-08-21 09:59
2003.09.04
есть ли аналог TOpenDialog , но только для выбора папки?


1-10773
johny
2003-08-25 13:14
2003.09.04
Выполнение процедуры на событие в другой процедуре


3-10574
eds
2003-08-14 17:46
2003.09.04
Группировка в справочнике клиентов


14-10980
aga
2003-08-14 09:45
2003.09.04
Поиск...


3-10634
Avreliy
2003-08-12 18:13
2003.09.04
Левое внешнее объединение 2х хранимых процедур