这段C++的代码如何翻译成Delphi的?

linsoo 2011-04-14 02:37:25
	int dataSize = 1024;
unsigned char *data = (unsigned char*)malloc(4 * sizeof(unsigned char*));
memset(data, NULL, 4 * sizeof(unsigned char*));
*data = dataSize >> 24 & 0xff;
*(data + 1) = dataSize >> 16 & 0xff;
*(data + 2) = dataSize >> 8 & 0xff;
*(data + 3) = dataSize & 0xff;


谢谢~
...全文
122 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuangning 2011-04-14
  • 打赏
  • 举报
回复
如果要实现c代码功能下面的 就可以了。
type
TTest = packed record
case Integer of
1:(data:Cardinal;) ;
2:(P:array [0..3] of Byte);
end;


var
Test:TTest;
begin
Test.data := 1024;
end;
linsoo 2011-04-14
  • 打赏
  • 举报
回复
var
stream : TMemoryStream;
i : integer;
begin
i := 1024;
stream := TMemoryStream.Create;
stream.Write(i,sizeof(Integer));
end;


我这么写好像不对?
bdmh 2011-04-14
  • 打赏
  • 举报
回复
如果只写个integer,那就太简单了,创建一个Stream,然后先写入integer,然后从另外一个流中copy过来整个数据,这不就是一个完整的流了吗
linsoo 2011-04-14
  • 打赏
  • 举报
回复
可能有啥简单的办法可以直接实现?
linsoo 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bdmh 的回复:]

仅供参考
Delphi(Pascal) code

var
dataSize : Integer;
data : array of PChar;
begin
dataSize := 1024;
SetLength(data,4);
FillChar(data, 0, 4);
data[0] := PChar(dataSize shr 24 and $f……
[/Quote]

谢谢答复,不过貌似还是有问题。

其实我是想吧一个integer型整数写到一个TMemoryStream的最前面,我看有C++代码是这么些的,我按你说的改造之后好像还是不行....


    AThread.Connection.WriteInteger(strStream.Size);
AThread.Connection.WriteStream(strStream, True);


我就是想把第一行WriteInteger给合并到创建strStream里面去。
bdmh 2011-04-14
  • 打赏
  • 举报
回复
仅供参考

var
dataSize : Integer;
data : array of PChar;
begin
dataSize := 1024;
SetLength(data,4);
FillChar(data, 0, 4);
data[0] := PChar(dataSize shr 24 and $ff);
data[1] := PChar(dataSize shr 16 and $ff);
data[2] := PChar(dataSize shr 8 and $ff);
data[3] := PChar(dataSize shr $ff);
end;

16,749

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧