Это, скорее всего, из-за того, что вы забыли про нолик на конце строки.
И зачем придумывать свой велосипед, когда есть PChar и String?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
v2: PChar;
begin
i:=StrToInt(Edit1.Text);
GetMem(v2, i+1);
ZeroMemory(v2, i+1);
Delaem(v2, i);
FreeMem(v2, i+1); //если уже не нужна, то не забываем освободить память
end;
procedure Delaem(v: PChar; i:integer);
const
metka = #33#34#35;
var
j, LocUkazatel: integer;
BufStr: string;
begin
for j:=0 to i-1 do
v[j]:= char(j+30);
LocUkazatel:= pos(metka, String(v));
BufStr:=Copy(String(v), LocUkazatel+3, 2);
end;