Hi,
mal ein wenig zu den Pointern. Schau dir mal in der
OH GetMem an. Da wirst du dann sehen, dass du eher zu New (und Dispose) greifen sollst. Warum musst / kannst du dort dann aber keine Größe angeben? Ganz einfach, Pointer sind echt nur Zeiger auf eine Adresse im Speicher. Die Größe deiner Adresse ist dabei fest durch dein BS vorgegeben (i.d.R. dürften dass also 32Bit / 4 Byte sein).
Wichtig ist hier zu verstehen, dass ein Pointer wirklich immer gleich groß ist, SizeOf(Pt) liefert dir immer 4 (so groß ist nämlich dein Pointer), sizeOf(pt^) sollte hingegen die Größe der Daten hinter pt liefern. Darin liegt auch der volle Vorteil von Pointern, du musst nicht mehr xxx Byte übergeben sondern nur noch eine Adresse (und die ist immer ein Register breit und damit optimal in der Größe).
Gruß Der Unwissende