求救以下Delphi代码,使用C#怎样实现。

yangys 2010-11-15 11:45:23
1、
  
function CheckSum(var CommData: TClientCommPacket): Boolean;
var
Buf: array of Byte;
i: Integer;
Sum: LongWord;
begin
SetLength(Buf, SizeOf(CommData));
CopyMemory(@Buf[0], @CommData, SizeOf(CommData));
Sum := 0;
for i := Low(Buf) to High(Buf) - SizeOf(LongWord) do
Sum := Sum + Buf[i];
Result := (CommData.Sum = Sum);

for i := Low(CommData.Data) to High(CommData.Data) do
CommData.Data[i] := CommData.Data[i] xor $FA;
/////////////////////////////////////////////////////
end;


TClientCommPacket 为结构体,重点是SetLength()函数;SizeOf()函数。
或者使用C#完全实现CheckSum()函数功能。也行。

2、

type
TBusinessFunc = function(const cIP: PChar; const Port: Word; const InData: Pchar; var OutData: Pchar): Boolean of object; stdcall;

procedure acceptClient(const SVRHandle: Integer; ProDataFunc: TProDataFunc); stdcall; External SVRDLL;



很急,能解答者重奖。

谢谢!


...全文
109 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangys 2010-11-17
  • 打赏
  • 举报
回复
谢谢楼主,经过今晚的研究与测试,问题已解决。

知道有"SizeOf"函数,但被网上的误导了,以为求不了结构体的大小。

CopyMemory()几经周折才找到处理的办法。

liuwei2500 2010-11-16
  • 打赏
  • 举报
回复
重点是SetLength()函数;SizeOf()函数

Sizeof()等同于int temp=System.Runtime.InteropServices.Marshal.SizeOf(CommData);
SetLength等同于Buf = new byte[temp];

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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