procedure TForm1.Button1Click(Sender: TObject);
var
p: Pointer;
s: string;
begin
s := 'a23';
p := PChar(s);
Byte(p^) := Ord('1');//想要实现 s[1] := '1',但这里报错
ShowMessage(s);
end;
var
p: Pointer;
s: string;
begin
s := 'a23';
p := PChar(s);
Byte(p^) := Ord('1');//想要实现 s[1] := '1',但这里报错
ShowMessage(s);
end;
Byte(p^)换成PByte(p)^试试
PByte(p)^:= Ord('1');
试试看
p := PChar(s);
这之后,P就是一个常量指针,常量指针所指的内容不可被修改,但是指针的指向地址可以修改
而指针常量的话,则是指针本身是常量,指向的地址不可以变化,但是指向的地址所对应的内容可以变化
var
p: PChar;
s: string;
begin
s := 'a23';
p := PChar(s);
GetMem(p,Length(S));
CopyMemory(p,PChar(s),Length(s));
P[0] := '1';
s := p;
ShowMessage(s[1]);
FreeMem(p,Length(s));
end;
搞不明白楼主为什么要绕一个圈子来实现这功能。。
希望我没搞错,水平有限