procedure TForm1.FormCreate(Sender: TObject);
var
p1, p2, p3: Pointer;
p4: Pointer;
iSize1, iSize2: integer;
begin
iSize1 := 10;
iSize2 := 10;
GetMem( p1, iSize1 );
GetMem( p2, iSize2 );
FillChar( p1^, iSize1, 'a' );
FillChar( p2^, iSize2, 'b' );
GetMem( p3, iSize1 + iSize2 );
p4 := Pointer( DWORD(p3) + iSize1 );
try
Move( p1^, p3^, iSize1 );
Move( p2^, p4^, iSize2 );
showmessage( string( pchar( p3 ) ) );
finally
FreeMem( P1 );
FreeMem( P2 );
FreeMem( P3 );
end;
end;
var
p1, p2, p3: Pointer;
p4: Pointer;
iSize1, iSize2: integer;
begin
iSize1 := 10;
iSize2 := 10;
GetMem( p1, iSize1 );
GetMem( p2, iSize2 );
FillChar( p1^, iSize1, 'a' );
FillChar( p2^, iSize2, 'b' );
GetMem( p3, iSize1 + iSize2 );
p4 := Pointer( DWORD(p3) + iSize1 );
try
Move( p1^, p3^, iSize1 );
Move( p2^, p4^, iSize2 );
showmessage( string( pchar( p3 ) ) );
finally
FreeMem( P1 );
FreeMem( P2 );
FreeMem( P3 );
end;
end;
解决方案 »
- 如何把 MyStream :TMemoryStream 转化为string
- SPCOMM 接收称重仪串口数据,ReceiveData每6秒返回2048字节数据
- 谁能回答一下有关INI配置文件的基本知识吗?(用法,定义.....)
- 晕啊!!!还是DELPHI数据库BDE的问题啊!!!!!!
- 一個小問題
- 关于ClientSocket连接ServerSocket问题
- How to study Delphi for a new peoper
- 找工作,求斑竹别删
- ----如何调用dll?等候----
- delphi应该学哪些内容?
- 请问专家:我的程序是Transaction出错还是。。。?
- 很弱的问题,判断一个文件是否存在的函数我忘了是什么了
beginbuffer3 := allocMem(size1 + size2);
tmpP := buffer3; //保存首地址
move(buffer1^, buffer3^, size1);
buffer3 := pointer(integer(buffer) + size1); //将buffer3指针往后移一个size1位置
move(buffer2^, buffer3^, size2);
buffer3 := tmpP;//复位
......end;读取buffer3的指针时同理可读出。
欢迎继续讨论,还有分没分呢!!!!!
ShowMessage 的结果 'aaaa...b....'的长度可能不止20个字节,那是因为
p3所指的内存字符b的后面不是#0的缘故,不是代码的问题。
integer(buffer) + size1
这里的integer 不是很好(虽然可以用),因为Pointer是指针,是无符号类型的DWORD,
所以最好强制转换为DWORD。