Length(s) ... nicht SizeOf
du willst ja die Länge des Strings und nicht die Größe des Zeigers auf diesen String ^^
[add]
Aber nimm lieber
MoveMemory(@buf, @s, Length(s) + 1);
denn so wird auch die abschließende #0 mit kopiert, welche in der Länge nicht mitgezählt wird