В Delphi вы можете скопировать запись, просто присвоив ее, благодаря магии компилятора.
MyData := DataSource^;
Динамические массивы подсчитываются по ссылкам, поэтому назначение также заботится о динамических массивах, если вам не нужна настоящая глубокая копия. При простом назначении они просто делят одну и ту же память.
Если вы не хотите, вы можете скопировать их по отдельности:
MyData.pPitch = Copy(pDataSource^.pPitch, Low(pDataSource^.pPitch),
High(pDataSource^.pPitch);