在写一个传输程序,在服务端我循环读取数据到一个缓冲然后在追加到另一个中去
var
lP_ReceiveBuffer :Pointer;
lP_ReceiveBuffer1 :Pointer;
begin
。 getmem(lP_ReceiveBuffer, 8192);
getmem(lP_ReceiveBuffer1,8192);
li_ReceiveSize := 0;
repeat
li_ReceiveSize := Socket.ReceiveBuf(lP_ReceiveBuffer^,8192);
if li_ReceiveSize > 0 then
begin
CopyMemory(lP_ReceiveBuffer1,lP_ReceiveBuffer,li_ReceiveSize);
end;
until (li_ReceiveSize <= 0);
可是copymemory覆盖了原来的变量,怎么追加lP_ReceiveBuffer的内容到lP_ReceiveBuffer1中?
var
lP_ReceiveBuffer :Pointer;
lP_ReceiveBuffer1 :Pointer;
begin
。 getmem(lP_ReceiveBuffer, 8192);
getmem(lP_ReceiveBuffer1,8192);
li_ReceiveSize := 0;
repeat
li_ReceiveSize := Socket.ReceiveBuf(lP_ReceiveBuffer^,8192);
if li_ReceiveSize > 0 then
begin
CopyMemory(lP_ReceiveBuffer1,lP_ReceiveBuffer,li_ReceiveSize);
end;
until (li_ReceiveSize <= 0);
可是copymemory覆盖了原来的变量,怎么追加lP_ReceiveBuffer的内容到lP_ReceiveBuffer1中?
ms: TStreamMemory:
begin
...
ms.write(...
会自动分配内存,你不用管理,只管往里写就行了,用法非常简单,看下帮助就会了。
想了解深入一点,可以去看源码,VCL的源码就是最好的学习资料.