Das +1 kommt daher, dass ja noch Platz für das abschließende #00 sein soll.
Erstens sind ein Nullzeichen SizeOf(Char) = 2 Byte, nicht nur 1 Byte, und zweitens ist das innerhalb einer Datei absolut unüblich ein Nullzeichen drin zu haben.
Der Code läuft garantiert unter D5, D7, D2009, XE8 und 10.1 Starter, nur nicht unter 10.1 Up1.
Bei mir nicht und ich hätte mich auch gewundert. Denn die Parameter für Move und WriteFile sehen da schon genauso aus.