Bist du dir sicher? ich kriegs so nur mit Pointern korrekt sortiert (D2007) !?
Ich schrieb doch "uminterpretiert". Wenn du also einen Record als Parameter hast, dann kann das nicht funktionieren, da TList.Sort immernoch einen Pointer übergibt, du ihn dann aber als TItem Record interpretierst (also den Pointer als TItem im Speicher typecastest).
Wenn du hingegen die Parameter als "PItem" (PItem = ^TItem) oder beide zu einem "var" Parameter machst (so das Delphi dir das "Pointer of TItem" abnimmt, geht das), weil Pointer uminterpretiert als PItem immernoch ein Pointer ist, nur hast du den richtigen Pointer-Typ.