Der Code selber scheint OK zu sein.
wie hast du denn "Output" befüllt? (wenn "buf" leer ist, könnte ich mir akuell nur einen Zugriffsfehler auf "Output" vorstellen)
Buf := Copy(Output);
wenn du mehr, als nur "Zeichen", im Record hast, wovon auch nichts dynamisch ist, dann gingt etwas in Richtung CopyMemory ... wie sieht den der record komplett aus?
So (nur mi dem einem Char drin) wäre CopyMemory/Move nur bremsend.
PS: CopyMemory ruft auch nur Move auf, also egal