c:=charptr('a')是把'a'常量(即97)强制转换成了指针。而像'a'这样的常量是没有地址的,如果想得到地址,需要这样写:var
 ...
 a:char; a:='a';
 c:=charptr(@a);
.....

解决方案 »

  1.   

    代码一有错吧,var c : cp;
        i : integer;
        s: char;
    begin
      new(c);
      c^:='a';
      i:=integer(c);
      showmessage(inttohex(i,10));
      freemem(c);
    end;/////////////////////////////////
    而代码2type cp= ^char ;var c : cp;
        i : integer;
        s: char;
    begin
      s:='a';
      c:= cp(s);
      i:=integer(c);
      //i:=integer(char(s));
      showmessage(inttohex(i,10));
    end;///////////////////////////////你会发觉
      c:= cp(s);
      i:=integer(c);与  i:=integer(char(s));
    作用是一样的,
      

  2.   

    正如keyz(keyz) 所述,是把'a'常量(即97)强制转换成了指针传给 c,
    再将指针 c  转换在Integer输出,作用与Integer( Char( s ) )一样的
      

  3.   

    to keyz:你的答案完全正确,谢谢.
    对delphi这点不满意,对于前一种情况,应该给出编译错误的。