S
smzgl
Unregistered / Unconfirmed
GUEST, unregistred user!
有个奇怪的问题,意图如下:通过移动指针,来实现修改字符串.例如:把0123456789,修改为01234ABCDE代码如下:
var
p,pp: Pointer
begin
GetMem(p,10);
PChar(p^):='0123456789';
Label1.Caption := PChar(p^);
pp:=p;
Inc(Char(pp^),5);
PChar(pp^):='ABCDE';
Label2.Caption := PChar(pp^);
Label3.Caption := pchar(p^);
end;
运行结果如下:
Label1显示 0123456789
Label2显示 ABCDE
Label3显示 ABCDE
发现问题没有? 用Inc移动指针后,再进行修改,结果,整个指针的内容都变了.跟踪进去看,发现其实在Inc之后,pp的指针地址并没有改变.
那我应该如何实现阿.
var
p,pp: Pointer
begin
GetMem(p,10);
PChar(p^):='0123456789';
Label1.Caption := PChar(p^);
pp:=p;
Inc(Char(pp^),5);
PChar(pp^):='ABCDE';
Label2.Caption := PChar(pp^);
Label3.Caption := pchar(p^);
end;
运行结果如下:
Label1显示 0123456789
Label2显示 ABCDE
Label3显示 ABCDE
发现问题没有? 用Inc移动指针后,再进行修改,结果,整个指针的内容都变了.跟踪进去看,发现其实在Inc之后,pp的指针地址并没有改变.
那我应该如何实现阿.