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

Вниз

HEX в DateTime   Найти похожие ветки 

 
petvv   (2012-05-20 22:08) [0]

В общем задача следующая:
Есть 8 Edit"ов в каждый из них вводится 16-ти ричные значения например D0 93 10 51 42 0A C9 01 по нажатию кнопки необходимо перевести 16 ти ричный код в DateTime.

Собственно как?

Вот то, что я навоял:


procedure TForm1.Button1Click(Sender: TObject);
type
  TD = record
     A : array [1..8] of byte;
  end;
var D:TDateTime;
   D1, M1, Y1:word;
   H11, M2, S2, S3 : word;

begin
  TD(D).A[1] := $+h1.Text; - нужно чтото типа этого
  TD(D).A[2] := $BB;
  TD(D).A[3] := $BB;
  TD(D).A[4] := $BB;
  TD(D).A[5] := $D5;
  TD(D).A[6] := $47;
  TD(D).A[7] := $E3;
  TD(D).A[8] := $40;
 DecodeDate(D, D1, M1, Y1);
 DecodeTime(D, H11, M2, S2, S3);

end;


 
Loginov Dmitry ©   (2012-05-20 23:43) [1]


> Есть 8 Edit"ов в каждый из них вводится 16-ти ричные значения
> например D0 93 10 51 42 0A C9 01 по нажатию кнопки необходимо
> перевести 16 ти ричный код в DateTime.


Кто будет HEX вводить в TEdit, пользователь? Откуда он берет эти значения? Что они означают?
Вы в курсе, что TDateTime это по сути обычный Double, т.е. дробное число?

p.s.:
StrToInt("$" + h1.Text)


 
Юрий Зотов ©   (2012-05-21 00:34) [2]


procedure TForm1.FormCreate(Sender: TObject);
var
 i: Int64; // Размер 8 байт
 d: TDateTime absolute i; // Те же самые 8 байт по тому же адресу
begin
 // Перечисляем байты в обратном порядке, а в памяти они пойдут как надо
 i := $01C90A42511093D0;
 // Интерпретируем 8 байт, как TDateTime и показываем в Caption
 Caption := DateTimeToStr(d)
end;


 
Sha ©   (2012-05-21 01:34) [3]

> Loginov Dmitry

это новое поколение хакеров


 
Германн ©   (2012-05-21 02:42) [4]


> это новое поколение хакеров

Это новое поколение троешников!


 
Омлет ©   (2012-05-21 07:52) [5]


> Loginov Dmitry ©   (20.05.12 23:43) [1]
> StrToInt("$" + h1.Text)

Тут скорее StrToInt64.


 
sniknik ©   (2012-05-21 08:13) [6]

> Тут скорее StrToInt64.
именно StrToInt. посмотри внимательнее справку по ней.


 
Омлет ©   (2012-05-21 15:37) [7]


> именно StrToInt. посмотри внимательнее справку по ней.

Посмотрел. Даже проверил:
StrToInt("$01C90A42511093D0") -> EConvertError.


 
sniknik ©   (2012-05-21 15:45) [8]

сори, спутал ;( с обратной функцией -  IntToStr, это там перекрыто.


 
Loginov Dmitry ©   (2012-05-21 23:46) [9]


> procedure TForm1.FormCreate(Sender: TObject);
> var
>   i: Int64; // Размер 8 байт
>   d: TDateTime absolute i; // Те же самые 8 байт по тому
> же адресу
> begin
>   // Перечисляем байты в обратном порядке, а в памяти они
> пойдут как надо
>   i := $01C90A42511093D0;
>   // Интерпретируем 8 байт, как TDateTime и показываем в
> Caption
>   Caption := DateTimeToStr(d)
> end;


Имхо, это пример нехорошего кода (пусть в ответ на дурацкую задачу).
Тут непонятно что, откуда, куда, зачем, да и еще absolute.


 
Loginov Dmitry ©   (2012-05-21 23:51) [10]

Массив array [1..8] of byte; выглядит более логичным и понятным (проще объяснить, не придется оправдываться, почему был выбран целочисленный тип Int64).


 
Dennis I. Komarov ©   (2012-05-21 23:54) [11]

Задача может и не дурацкая, лично конвертил определенный инт в некое датетайм и обратно, по-феншую. Хранить время с точностью до секунды не всегда надо...


 
Юрий Зотов ©   (2012-05-22 00:41) [12]


> Loginov Dmitry ©   (21.05.12 23:46) [9]
> Тут непонятно что, откуда, куда, зачем, да и еще absolute.

Кому как. И "Hello, world" кому-то бывает непонятным.

Поначалу.


 
Германн ©   (2012-05-22 01:55) [13]


> Имхо, это пример нехорошего кода (пусть в ответ на дурацкую
> задачу).

Но имхо, самое логичное при наличии некоторого присутствия телепатии. :)
Сам же задал вопрос
> Кто будет HEX вводить в TEdit, пользователь? Откуда он берет
> эти значения? Что они означают?

Имхо автор знает, что (например) в некотором файле по некоторому адресу хранится в восьми байтах дата/время. И он хочет понять как по этим восьми байтам получить дату/время в "человеческом виде", а возможно и очень хочет в эти восемь байт записать другое дата/время.
Все прочие варианты в которых используется StrToInt не рассматриваю. Ибо ненаучная фантастика. :)



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

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

Наверх




Память: 0.5 MB
Время: 0.248 c
2-1334410535
tolbase
2012-04-14 17:35
2013.03.22
Delphi 7! Как отловить событие minimize формы?


3-1287144551
IvanKonst
2010-10-15 16:09
2013.03.22
построения графа по базе данных


4-1261315823
GreyWolf
2009-12-20 16:30
2013.03.22
Установка Windows Caption Icons Size локально для приложения


2-1331910674
leklerk
2012-03-16 19:11
2013.03.22
Доступ к данным через TDBGrid и TADODataSet


15-1332015528
>|<
2012-03-18 00:18
2013.03.22
Взаимодействие приложений