我创建了三块内存区域
buf, buf1, buf2 : pchar然后给他们分别分配空间buf := AllocMem(8000);
buf1 := AllocMem(4000);
buf2 := AllocMem(4000);然后我给buf1,buf2分别写入了一些数据,
buf1写入了长度为offset1 = 2100的内容
buf2也写入了长度为offset2 = 2100的内容然后我调试的时候看了一下,buf1,buf2中的数据没有问题,可是当我调用copyMemory(buf, buf1, offset1);
这个时候也没有问题,buf1中的数据成功复制过来了,
但是当
copyMemory(buf+offset1, buf2, offset2);的时候出现问题,buf2的内容没有复制完全,紧紧一部分复制到了buf中我调试了一下,buf中的内容都是4095,超过的部分就没有复制过来。谁遇到过这样的问题?
求解阿!!!!
谢谢各位了~~~~
buf, buf1, buf2 : pchar然后给他们分别分配空间buf := AllocMem(8000);
buf1 := AllocMem(4000);
buf2 := AllocMem(4000);然后我给buf1,buf2分别写入了一些数据,
buf1写入了长度为offset1 = 2100的内容
buf2也写入了长度为offset2 = 2100的内容然后我调试的时候看了一下,buf1,buf2中的数据没有问题,可是当我调用copyMemory(buf, buf1, offset1);
这个时候也没有问题,buf1中的数据成功复制过来了,
但是当
copyMemory(buf+offset1, buf2, offset2);的时候出现问题,buf2的内容没有复制完全,紧紧一部分复制到了buf中我调试了一下,buf中的内容都是4095,超过的部分就没有复制过来。谁遇到过这样的问题?
求解阿!!!!
谢谢各位了~~~~
就是第二次拷贝的时候,要从buf内存中的buf+offset1的指针位置开始copy,
跨过buf1的那部分。
CopyMemory(buf, buf1, length(buf1));
CopyMemory(buf + length(buf1), buf2, length(buf2));
有可能是数据过长了
使用下面的方法检测:
copyMemory(buf+offset1, buf2, offset2);
ShowMessage(BoolToStr(CompareMem(Pointer(LongWord(buf)+LongWord(offset1)),buf2,offset2),True));
如果你使用的是Delphi 2009的话,那问题就有点大了。除非把定义:
buf, buf1, buf2 : pchar 改为:
buf, buf1, buf2 : pAnsiChar
comparemem返回的是true,
但是ctrl+f7看到的buf内容只有4096个字节。
难道调试的时候内存里面的内容只能看到4k的东西?
还有点疑问,在开帖子说吧~~我用的是delphi7,太谢谢僵哥了~~~谢谢各位~~