我编写了这段代码,并在其中添加了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;