MQL5Book/Scripts/p4/ConversionStruct.mq5
super.admin 1c8e83ce31 convert
2025-05-30 16:09:41 +02:00

69 lines
2 KiB
MQL5

//+------------------------------------------------------------------+
//| ConversionStruct.mq5 |
//| Copyright 2021, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Date and Time including milliseconds |
//+------------------------------------------------------------------+
struct DateTimeMsc
{
MqlDateTime mdt;
int msc;
DateTimeMsc() : msc(0)
{
ZeroMemory(mdt);
}
DateTimeMsc(MqlDateTime &init, int m = 0) : msc(m)
{
mdt = init;
}
};
//+------------------------------------------------------------------+
//| Convert datetime to MqlDateTime |
//+------------------------------------------------------------------+
MqlDateTime TimeToStructInplace(datetime dt)
{
static MqlDateTime m;
if(!TimeToStruct(dt, m))
{
static MqlDateTime z = {};
return z;
}
return m;
}
#define MDT(T) TimeToStructInplace(T)
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
DateTimeMsc test(MDT(D'2021.01.01 10:10:15'), 123);
uchar a[];
Print(StructToCharArray(test, a));
Print(ArraySize(a));
ArrayPrint(a);
/*
outputs (array is reformatted):
true
36
229 7 0 0
1 0 0 0
1 0 0 0
10 0 0 0
10 0 0 0
15 0 0 0
5 0 0 0
0 0 0 0
123 0 0 0
*/
DateTimeMsc receiver;
Print(CharArrayToStruct(receiver, a)); // true
Print(StructToTime(receiver.mdt), "'", receiver.msc);
}
//+------------------------------------------------------------------+