Форум: "Начинающим";
Текущий архив: 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.057 c