Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TDate упаковать в 2 байта (Delphi) 
:(
    Опции темы
Jees
Дата 6.5.2013, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.6.2012

Репутация: нет
Всего: нет



Доброго времени суток!
Возникла задача записать дату в 2 байта таким образом:

 31 декабря 2020
11111 1010  0010100
  day  month   year

понимаю что нужно использовать битовые смещения, но сам в них не очень понимаю.
Что получилось на данный момент:
Код

var
  dt: TDate;
  aMonth, aDay: Word;
begin
  dt:=EncodeDate(2012, 12, 31);

  aMonth:=MonthOf(dt);
  aDay:=DayOf(dt);

  d:= LoByte(aDay) shl 3;
  m:=(LoByte(aMonth) shr 1) - $01;
  b:=d or m; // первый байт

end;


а с формированием второго байта затык....

Знатоки, подскажите пожалуйста  smile 

P.S. RAD Studio XE3
PM MAIL   Вверх
kami
Дата 6.5.2013, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Чегой-то я не очень понял.
Судя по 
Цитата(Jees @  6.5.2013,  16:12 Найти цитируемый пост)
11111 1010  0010100

день - самая старшая часть старшего байта.
а судя по
Цитата(Jees @  6.5.2013,  16:12 Найти цитируемый пост)
 d:= LoByte(aDay) shl 3;

это старшая часть младшего байта.

ку? Поясните, плиз.

Это сообщение отредактировал(а) kami - 6.5.2013, 16:47
PM MAIL WWW   Вверх
Чучмек
Дата 6.5.2013, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Под год остается 7 бит  - 128 лет  Какой год считать нулевым?

Добавлено через 8 минут и 32 секунды
Цитата(Jees @  6.5.2013,  16:12 Найти цитируемый пост)
0010100
 надо думать 2000
Код

function DataEncode(day,month:byte;year:word):word;
begin
  result:=day or month shl 5 or (year-2000) shl 9;
end;




--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Чучмек
Дата 6.5.2013, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



И обратно
Код

 day:=pd and $1F;
 month:= pd shr 5 and $F;
 year:=2000 + pd shr 9;



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0420 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.