帮忙看一下这段代码异常在哪里?pchar类型的变量总是出错

帮忙看一下这段代码错误在哪里?pchar类型的变量总是出错
procedure   TForm1.Button3Click(Sender:   TObject);
var
        instream:pchar;
        outstream:pchar;
        rle_code:Word;
        ptr_instream:Word;
        ptr_outstream:Word;
        i,loopcnt:Word;
        s:string;
begin
    s:= ' ';
    try
        instream:=allocmem(p.picsize);
        getmem(outstream,sizeof(outstream));
    if   ifopen   =   false   then
    begin
        pics:=tfilestream.Create( 'GraphicEx_4.bin ',fmopenreadwrite);
        ifopen:=true;
    end;
    pics.Position:=p.picadd+16;
    pics.ReadBuffer(instream^,p.picsize);

    //showmessage(inttostr(length(buf)));
  {   for   i:=0   to   p.picsize-1   do
    begin
        s:=s+inttohex(word(buf[i]),2);
    end;
    memo2.Lines.Add(s);
    //memo2.Lines.Add(string(buf))   ;   }

//获取解码数据的代码开始

        ptr_instream:=0;
        ptr_outstream:=0;
        i:=0;
        loopcnt:=0;
        while   ptr_instream   <   p.picsize   do
        begin
                //c:=instream[ptr_instream];
                rle_code   :=   Word(instream[ptr_instream]);
                //rle_code:=Integer(c);
                Inc(ptr_instream);
                case   rle_code   and   $f0   of
                        $00:
                                begin
                                        loopcnt   :=   rle_code;
                                        for   i   :=   0   to   loopcnt   -   1   do
                                        begin
                                                outstream[ptr_outstream]   :=   instream[ptr_instream];
                                                Inc(ptr_instream);
                                                Inc(ptr_outstream);
                                        end;