指针操作 ( 积分: 30 )

  • 主题发起人 主题发起人 jobe159
  • 开始时间 开始时间
J

jobe159

Unregistered / Unconfirmed
GUEST, unregistred user!
要把某指针的内容复制到另一个指针里。(当然这两个指针的地址不同,释放其中一个不影响另一个)。
我试过move,copy等函数都没有达到目的。
望高手指点。
 
要把某指针的内容复制到另一个指针里。(当然这两个指针的地址不同,释放其中一个不影响另一个)。
我试过move,copy等函数都没有达到目的。
望高手指点。
 
把源指针的内容复制给一个临时变量
再进行操作.

指针对全局和局部,很受影响
 
前提两个指针指向的结构要相同。
例如:
font1,font2:Tfont;

font1.Assign(font2);
这样font1和font2就内容一样了
如果指针指向的结构是record,就要一个一个的赋值了。
 
to cactus123456
楼主的意思:当然这两个指针的地址不同

万一 一个是全局 ,另一个是局部的话,hoho~~~~~~~~[:D]
 
function strupper(dest,source:pchar;maxlen:integer):pchar
var
i:integer;
begin
i:=0;
while(i<maxlen)and (source<>#0) do
begin
dest:=upcase(source);
inc(i);
end;
dest:=#0;
result:=Dest;
end;
相信这个列子对你应该有帮助
 
这个只是字符串的复制
 
可以用CopyMemory试试。
 
总长度对就成,对的,内存拷贝,然后删从前的;
 
to 爱多,
其实我说的是指针类型相同
对于指针指向内容的拷贝,想不出全局和局部会有什么问题,就像你定义了2个string,一个是全局,一个是局部变量,他们两个之间的赋值应该没有什么问题吧。
 
看我写的一篇文章:http://www.tommstudio.com/ViewArticles.aspx?ID=8
http://www.tommstudio.com/
 
各位,其实用 &quot;:=&quot;和&quot;Assign&quot;,效果都是一样的,包括Move,copy。
实际两个变量指的是同一个地址。例如:
假设有两个指针(它们指向的结构相同),p1,p2;
....
new(p1);
new(p2);
p2:=p1;
dispose(p1);
....
执行上述代码出现内存引用错误。因为实际上p1,p2 指的是同一个地址。
注意:
我现在要解决的问题是,让p1,p2内容相同,而指向的地址不同。从操作
其中一个指针不会影响另一个。
 
如果是record类型的话,比如
type
tmyreg = record
i:integer;
end;
pmyreg = ^tmyreg;

那就是
p2^.i := p1^.i;
 
多人接受答案了。
 
后退
顶部