Похоже не хватает функциональной пары GetMem...FreeMem или может нужно передавать указатель^ на переменную с последующей SetLength, а может просто сменить её тип на pchar...
Вот пример на основе считывания инфы из файла
Код:
...
var
fpdt: file of byte;
sm: integer;
text: pchar;
fd: string;
...
...
GetMem(text, sm);
BlockRead(fpdt, text^, sm);
fd:= string(text);
SetLength(fd, sm);
FreeMem(text);
...