var
  mychar:pchar;
begin
  try
    mychar:=allocmem(255);
    GetSystemDirectory(mychar,255);   //如果这样赋值就不出错
    mychar:=pchar('abc');             //这样赋值就出错 
    showmessage(mychar);
  finally
    freemem(mychar);    
  end;
end;下面这段也出错,错误信息:invalid pointer operater
var
  mychar:pansichar;
begin
  try
    getmem(mychar,255);
    mychar:='abc';
    showmessage(mychar);
  finally
    strdispose(mychar);
  end;
end;

解决方案 »

  1.   

    PChar是指针,当然不同一般的String的http://lysoft.7u7.net
      

  2.   

    我弄错了...是在freemem这里出错,刚刚没说清楚!
      

  3.   

    你释放错了    mychar:=pchar('abc');             //现在MYCHAR指向'ABC' ,原来的指针丢了
        showmessage(mychar);
      finally
        freemem(mychar);    //你释放的是'ABC'
      

  4.   

    的确,mychar指方向变了,下面是可以通过的
      try
        getmem(mychar,255);
        //mychar:='abc';
        //showmessage(mychar);
        //showmessage(inttostr(getsystemdirectory(mychar,255)));
      finally
        //strdispose(mychar);
        freemem(mychar);
      end;