字符型数组有时候能够代替PCharvar
  PC: PChar;
  AC: array[0..1023] of Char;
begin
  AC := '1234';
  PC := AC;
end;var
  AC: array[0..1023] of Char;
  PC: PChar;
begin
//用字符型数组获取
  GetWindowsDirectory(AC, SizeOf(AC));
  Caption := AC;//用PChar获取
  GetMem(PC, 1024);
  GetWindowsDirectory(PC, 1024);
  Caption := PC;
  FreeMem(PC);
end;我想知道有什么规则吗?
什么时候能够代替什么时候不能代替,其中又有什么区别呢?

解决方案 »

  1.   

    我看DELPHI2编成大全中讲得比较详细,大概是这样的.
    一.当定义AC:array[0..10]of char时只有当下标是从0开始时才能与PCHAR等同.当下标不是从0开始时就不等于PCHAR. 
    二.二者的内存分配情况不同.数组定义时就分配了内存.而PCHAR必须用Getmem来获得,用freemem来释放.
      

  2.   

    有的地方能够用字符类型的数组代替PChar。有的地方不能够代替。
    是不是这样的?还是都能用字符类型的数组代替PChar。
    能否举个例子。
      

  3.   

    我看到的用pchar好一些,毕竟那个更灵活,还可以释放呢
      

  4.   

    当定义AC:array[0..10]of char时只有当下标是从0开始时才能与PCHAR等同
      

  5.   

    pchar 是NULL式字符串,结尾肯定有个\0字符树祖就不知道了,如果你自己加入了\0,就是个字符串,如果没有,那就不是
      

  6.   

    当定义AC:array[0..10]of char时只有当下标是从0开始时才能与PCHAR等同,否则就不行了!
    所以推荐字符数组最好能从0开始!
      

  7.   

    或者
    AC:array[5..10]of char;
    PC: PChar;PC:=@AC[5];
      

  8.   

    有的地方能够用字符类型的数组代替PChar。有的地方不能够代替。
    是不是这样的?
      

  9.   

    回复人: zzhuz(大件) ( ) 信誉:100  2003-05-08 22:34:00  得分:0 
     
      或者
    AC:array[5..10]of char;
    PC: PChar;PC:=@AC[5];
      有道理
     
      

  10.   

    pchar和字符数组最大的不同还是pchar是以/0结尾