Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.109 c
15-1335356229
AV
2012-04-25 16:17
2013.03.22
Кодировка русских путей при запуске bat, сделанного в NotePad


2-1333617342
gadget
2012-04-05 13:15
2013.03.22
Сервер WordApplication


15-1353477561
alexdn
2012-11-21 09:59
2013.03.22
Учебник по asp.net


15-1345453966
Es
2012-08-20 13:12
2013.03.22
ADO + большая транзакция


15-1349728205
Юрий
2012-10-09 00:30
2013.03.22
С днем рождения ! 9 октября 2012 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский