我编写了这段代码,并在其中添加了AV。

  procedure TForm1.Button1Click(Sender: TObject);
  Var
     C : Pchar;
     s : string;
 begin
    c:= PChar('*');
    s := string(c); // AV here , but code works if i put C:= PChar('**')
   ShowMessage(c);
end;


我不知道为什么。有人知道吗?

提前致谢。

最佳答案

AV表示对内存的处理不正确。无处获取数据或无处写入。

问题出在不同类型的数据上。


  '*'


是Char,但是


  '**'


是字符串

这将与您的代码一起正常工作:

 procedure TForm1.Button1Click(Sender: TObject);
 Var
    C : Pchar;
    s : string;
 begin
    c:= PChar(string('*'));
    s := string(c); // AV here , but code works if i put C:= PChar('**')
   ShowMessage(c);
end;

10-05 22:15