Das gesamte Problem lässt sich viel einfacher lösen. Ein TDateTime ist ein Float-Wert, und der Vorkommaanteil gibt die Anzahl der Tage seit einem Datum an (welches genau weiss ich grad nicht, ist auch unwichtig hier für).
Also: DateOfFirstDayOfTheWeek := TestDate - DayOfTheWeek(TestDate) + 1;
Edit: Was ist eigentlich eine "rocedure"?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)