I've discovered a way to do this (at least for Structures)
I got my inspiration from the array functions always passing the first element as an argument
array insert at bottom a(0)
This is my function in c++
void TestUnsigned ( unsigned long ArrayPTR )
{
SYSTEMTIME st;
GetSystemTime(&st);
DWORD ArrayLoc=*(DWORD*)(ArrayPTR+0);
*(DWORD*)(ArrayLoc+0)=st.wYear;
*(DWORD*)(ArrayLoc+4)=st.wMonth;
*(DWORD*)(ArrayLoc+8)=st.wDayOfWeek;
*(DWORD*)(ArrayLoc+12)=st.wDay;
*(DWORD*)(ArrayLoc+16)=st.wHour;
*(DWORD*)(ArrayLoc+20)=st.wMinute;
*(DWORD*)(ArrayLoc+24)=st.wSecond;
*(DWORD*)(ArrayLoc+28)=st.wMilliseconds;
}
This is How it is defined in the resource file
This is the DBPro Code
Type tTest
wYear as WORD
wMonth as WORD
wDayOfWeek as WORD
wDay as WORD
wHour as WORD
wMinute as WORD
wSecond as WORD
wMilliseconds as WORD
EndType
Dim a(0) as tTest
set text opaque
do
a(0).wYear=9999
a(0).wMonth=99
a(0).wDayOfWeek=9
a(0).wDay=99
a(0).wHour=99
a(0).wMinute=99
a(0).wSecond=99
a(0).wMilliseconds=9999
text 0,0,"Before Call - Date/Time = " + str$(a(0).wDay) + "/" + str$(a(0).wMonth) + "/" + str$(a(0).wYear) + " " + str$(a(0).wHour) + ":" + str$(a(0).wMinute) + ":" + str$(a(0).wSecond) + "." + str$(a(0).wMilliseconds)
D3D_Test a(0)
text 0,15,"After Call - Date/Time = " + str$(a(0).wDay) + "/" + str$(a(0).wMonth) + "/" + str$(a(0).wYear) + " " + str$(a(0).wHour) + ":" + str$(a(0).wMinute) + ":" + str$(a(0).wSecond) + "." + str$(a(0).wMilliseconds)
loop
I am very pleased with this result. I can't provide the dll at the moment as it is in a test version of my D3DFunc.dll, but attached is the executable for you to try.
D3DFunc - Superfast Antialiased text & much much more