我这样测试,竟然不行:
procedure test;
var 
p:Pchar;
begin  if p=nil then
  showmessage('good');
end;它竟然没有显示,奇怪了,请问是为什么呢?

解决方案 »

  1.   

    PChar是指向字符的指针,不是字符串。
    没有赋值的PChar变量不为空,所以没有显示。
      

  2.   

    procedure text(pc:Pchar);
    begin
    if strpas(pc)='' then
    showmessage('字符串为空!');
    end;
      

  3.   

    谢谢两位兄弟,但是还是不行,我测试过了 
    procedure test;
    var 
    p:Pchar;
    begin  showmessage(inttostr(length(strpas(p))));
    end;得到的结果竟然是3,怎么回事哦
      

  4.   

    procedure test;
    var 
    p:Pchar;
    begin
      //p指向堆栈中未知位置.
    end;
      

  5.   

    Pchar 是一个指针,它有可能指向一个无效地址,第一个问题就是你如何判断它是否无效?
      

  6.   

    var
         p:pchar;
         i:integer;
    begin
          p:=GetMemory(2);
          i:=StrLen(p);
          if i=0 then
             showmessage('empty')
          else
             showmessage('not empty') ;
          FreeMemory(p)
    end;
      

  7.   

    谢谢楼上的兄弟我不懂了,一个局部变量,我按你们的方法试了:
    showmessage(inttostr(i))竟然等于3,showmessage(p+'a')竟然等于'激Ca'我在几台机都是这样,应该不是机器问题或者delphi 问题吧。
    win2000+delphi7/delphi6
      

  8.   

    如果是指针你必须要进行初始化,否则是指向一个未知的意义的地址。对一个无意义的地址是不存在判断它是否是某个值的必要的。定义后给 Nil 值或其它有初值。
      

  9.   

    局部变量使用前要初始化嘛,,试试全局的,,nil 马上就来了