pchar
 要分配内存,
//l  这句相当于分配了内存。

解决方案 »

  1.   

    bintohex(p,t,3);改为
    bintohex(Pchar(p),pchar(t),3);
      

  2.   

    应改为:
    procedure TForm1.ToolButton2Click(Sender: TObject);
    var
    p,t:pchar;
    begin
    p:='aaa';
    new(t);
    bintohex(p,t,3);
    showmessage(t);
    end;因为照原来这样,为t分配的空间只能存放3个字符,不够容纳由‘aaa’转换而得的hex(共有别于个字符:616161)的。
      

  3.   

    抱歉,上面打入错了,应为:‘aaa'转换而得的hex(共有6个字符:'616161')。
                           。                  
      

  4.   

    可是我遇到了这样的怪问题:
    var
    p1:pointer;
    p:pchar;
    begin
    p:='MM';
    getmem(p1,4);
    bintohex(p,p1,2);
    showmessage(pchar(p1));
    showmessage(inttostr(length(pchar(p1)));//着竟然是5 !!???
    end;
      

  5.   

    我坚信是您弄错了。我已试过您的程序,结果为4,而不是5。(您的程序的第二个showmessage语句少了一个右括号)
      

  6.   

    这在我的这个工程里面的确是5,但是我自己建立了一个新工程测试了一下,没错,是4。我感到很奇怪。
    我在原来的工程里面
    showmessage(inttostr(ord(pchar(p1)[5])));//看到的是 0真的很奇怪。