TDateTime in FileTime (64Bit) umrechnen

// TDateTime in FileTime
void _fastcall TForm1::DateTime2FileTime(TDateTime* DateTime, LPFILETIME lpFileTime)
{
    SYSTEMTIME SystemTime;
    DateTimeToSystemTime(*DateTime,SystemTime);
    SystemTimeToFileTime(&SystemTime,lpFileTime);
}
// FileTime in TDateTime
void _fastcall TForm1::FileTime2DateTime(LPFILETIME lpFileTime, TDateTime* DateTime)
{
    SYSTEMTIME SystemTime;
    FileTimeToSystemTime(lpFileTime,&SystemTime);
    *DateTime = SystemTimeToDateTime(SystemTime);
}

Verzögerungsschleifen

// Bsp 1: 
void TForm1::__Delay(const DWORD Millisekunden)
{
    DWORD Start = GetTickCount();
    DWORD Ist = Start;

    while (((Ist - Start) < Millisekunden) &amp;&amp; (Start <= Ist)) Ist = GetTickCount();
}

// Bsp 2: 
void TForm1::__Delay(int D) // Dauer in Millisekunden
{
    for (int i = 0; i < D; i += 50)
    {
        Sleep(50);
        Application->ProcessMessages();
    }
}

Tage im Monat/Schaltjahre ermitteln

// Version 1:
// Ausgruf: int TageFebruar = 28 + ist_Schaltjahr(1999);
int __fastcall ist_Schaltjahr(int jahr)
{
    if (jahr % 4 == 0)
       if (jahr < 1582) return 1;
       else if (!(jahr % 100 == 0)) return 1;
            else if (jahr % 400 == 0) return 1;
    
    return 0;
}

// Version 2:
unsigned short GetDaysInMonth(unsigned short month, unsigned short year)
{
    static unsigned short GauDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    return GauDays[month - 1] + ((month == 2) && IsLeapYear(year));
}

Systemzeit über SYSTEMTIME auslesen

#include <winbase.h>

AnsiString __fastcall TMain::GetSystemTime()
{
    struct _SYSTEMTIME t;
    AnsiString sTimeString;

    GetSystemTime(&t);

    sTimeString = IntToStr(t.wYear) + IntToStr(t.wMonth) + IntToStr(t.wDayOfWeek) + IntToStr(t.wDay) + IntToStr(t.wHour) + IntToStr(t.wMinute) + IntToStr(t.wSecond) + IntToStr(t.wMilliseconds);
    return sTimeString
}

Zeitmessung mit dem Hardwaretimer

// Es wird die Zeit in Sekunden zwischen zwei Timeraufrufen
// (Timerstart-Zeit und Timerstop-Zeit) gemessen: 

void __fastcall TMain::Button1Click(TObject *Sender)
{
    LARGE_INTEGER Frequency, TimerStart, TimerStop;
    __int64 Latency;
    double Usedtime;
    int Digits = 12; // 12 Nachkommastellen

    // erst die Latzenzzeit des Counters berechnen:
    QueryPerformanceFrequency(&Frequency);
    QueryPerformanceCounter(&TimerStart);
    QueryPerformanceCounter(&TimerStop);
    Latency = TimerStop.QuadPart - TimerStart.QuadPart;

    QueryPerformanceCounter(&TimerStart);

    irgendwas(); // Code für den die Zeit gemessen werden soll

    QueryPerformanceCounter(&TimerStop);
    Usedtime = (((double)TimerStop.QuadPart - (double)TimerStart.QuadPart) - (double)Latency) / (double)Frequency.QuadPart;
    Label1->Caption = FloatToStrF(Usedtime, ffFixed, 16, Digits) + " s";
}