Creo que el problema debe de estar aqui:
Código Delphi
[-]
move(buffer^,Aux^,sizeof(buffer));
Date cuenta que sizeof(buffer) siempre valdra 4 ya que ese es el tamaño de un PChar (si buffer es un PChar que tampoco lo aclaras), y no tiene nada que ver con el contenido de la memoria al que apunta ese puntero. Pero la verdad es que ya me estoy empezando a perder con tu codigo

No estoy seguro de lo que estas intentando hacer pero tiene que haber alguna manera mas sencilla de hacerlo.