delphi中有没有类似象C++中的memcpy的内存拷内函数,或如何实现相同的目的,难道是pascal的缺陷吗?(200分)

  • 主题发起人 主题发起人 crob
  • 开始时间 开始时间
C

crob

Unregistered / Unconfirmed
GUEST, unregistred user!
我的delphi函数接收从VC传过来的结构指针,些结构指针中的一结构成员也是pointer型的。
如何实现内存拷贝,将一个指针地址中的内容拷贝到另一个指针地址中?
第一个指针参数通过定义p: ^TResponse;的结构指针类型后然后再对 p^ 附值传出去了。
可是TResponse结构中还有另一个成员是pointer型的,也要指向另一个结构,由于该结构要
与VC保持同步所以没法定义成结构指针类型,必须进行内存拷贝!
我先后试过
var rt:TResponse
.........
rt.Buffer := AllocMem(SizeOf(rtBuffer));
//rt.buffer为Tresponse中的一个指针成员
Strcopy(rt.Buffer, @rtBuffer);
......失败
还有人教我使用
var Stream : TMemoryStream;
........
Stream := TMemoryStream.Create;
Stream.ReadBuffer(rtBuffer,SizeOf(TregReturn));
//调试到此处说不能读取
Stream.WriteBuffer(rt.Buffer,SizeOf(TregReturn));
Stream.Free;


我找了半天也没有找到相关的函数,这种操作在C++中是很容易实现的呀,难道是pascal
语言的不足吗?请帮帮我!
 
ReadBuffer:是把stream中的东西读到buffer中
WriteBuffer:是把buffer中的东西写到stream中去
可以通过先WriteBuffer然后ReadBuffer把一块内存中的东西copy到另一块中.
不知你的各参数的意思是什么?
如果rtBuffer是你传过来的东西,而rt.Buffer是你接收的东西你把两打语句倒换过来可以了.
 
用move:
move(rt.buffer^,rtBuffer,rtBufferLength);
~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~
目标 源 长度
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
913
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部