DateTime To ByteArray / ByteArray to DateTime
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 62
- Kayıt: 04 Oca 2009 06:36
DateTime To ByteArray / ByteArray to DateTime
Çok araştırdım Bulamadım. Tarih ve Saat değerlerini byte array ve byte arrayden Tarih ve Saat değerlerinin çevrimi ile alakalı bilgi verebilecek örnek gösterebilecek var mı? Teşekkürler
Re: DateTime To ByteArray / ByteArray to DateTime
TDateTime aslında Double tipinde bir veridir. Yani 8 byte'lık bir sayıdır.
Dolayısıyla 8 byte'lık bir byte array'a kopyalabilirsiniz.
Daha sonra buf'ı TDateTime(buf) şeklinde dönüşüm yapıp kullanabilirsiniz.
Muhtemelen başka yöntemleri de vardır ama benim ilk aklıma bu geldi.
Dolayısıyla 8 byte'lık bir byte array'a kopyalabilirsiniz.
Kod: Tümünü seç
var
dt: TDateTime;
buf: array[0..7] of Byte;
begin
dt := Now;
Move(dt, buf[0], SizeOf(dt));
Muhtemelen başka yöntemleri de vardır ama benim ilk aklıma bu geldi.
There's no place like 127.0.0.1
-
- Üye
- Mesajlar: 62
- Kayıt: 04 Oca 2009 06:36
Re: DateTime To ByteArray / ByteArray to DateTime
Yönteminizi denedim. ByteArray e geçişte sıkıntı yok. Yalnız ByteArray den çevirim yapamadım. Çevrim yapmak istediğim ByteArray de TArray(Byte) tipinde...SimaWB yazdı:TDateTime aslında Double tipinde bir veridir. Yani 8 byte'lık bir sayıdır.
Dolayısıyla 8 byte'lık bir byte array'a kopyalabilirsiniz.Daha sonra buf'ı TDateTime(buf) şeklinde dönüşüm yapıp kullanabilirsiniz.Kod: Tümünü seç
var dt: TDateTime; buf: array[0..7] of Byte; begin dt := Now; Move(dt, buf[0], SizeOf(dt));
Muhtemelen başka yöntemleri de vardır ama benim ilk aklıma bu geldi.
-
- Üye
- Mesajlar: 62
- Kayıt: 04 Oca 2009 06:36
Re: DateTime To ByteArray / ByteArray to DateTime
Problemim
Yaptığım denemeyi paylaşıyorum. İhtiyacı olanlar faydalanabilirler...
yardımıyla çözüldü. Teşekkürler.SimaWB
Yaptığım denemeyi paylaşıyorum. İhtiyacı olanlar faydalanabilirler...
Kod: Tümünü seç
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TByteArr = TArray<Byte>;
TForm2 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Memo2: TMemo;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
dt:TDateTime;
d:TDate;
t:TTime;
fdtArr:TByteArr;
fdArr:TByteArr;
ftArr:TByteArr;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var i:Integer; s:string;
begin
Memo1.Lines.Clear;
dt := Now;
d := StrToDate(DateToStr(dt));
t := StrToTime(TimeToStr(dt));
Label1.Caption := DateTimeToStr(dt);
SetLength(fdtArr,SizeOf(dt));
SetLength(fdArr,SizeOf(d));
SetLength(ftArr,SizeOf(t));
Move(dt,fdtArr[0],SizeOf(dt));
Move(d ,fdArr[0] ,SizeOf(d));
Move(t ,ftArr[0] ,SizeOf(t));
s:='';
for I := Low(fdtArr) to High(fdtArr) do
s := s + ','+IntToStr(fdtArr[i]);
Delete(s,1,1);
Memo1.Lines.Add('fdtArr=('+s+')');
s:='';
for I := Low(fdArr) to High(fdArr) do
s := s + ','+IntToStr(fdArr[i]);
Delete(s,1,1);
Memo1.Lines.Add('fdArr=('+s+')');
s:='';
for I := Low(ftArr) to High(ftArr) do
s := s + ','+IntToStr(ftArr[i]);
Delete(s,1,1);
Memo1.Lines.Add('ftArr=('+s+')');
end;
procedure TForm2.Button2Click(Sender: TObject);
var i:Integer;
begin
Memo2.Lines.Clear;
Move(fdtArr[0],dt,SizeOf(dt));
Move(fdArr[0] ,d ,SizeOf(d));
Move(ftArr[0] ,t ,SizeOf(t));
Memo2.Lines.Add(DateTimeToStr(dt));
Memo2.Lines.Add(DateToStr(d));
Memo2.Lines.Add(TimeToStr(t));
end;
end.