首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

以上Delphi代码,使用C#怎样实现

2012-12-28 
求救以下Delphi代码,使用C#怎样实现。1、function CheckSum(var CommData: TClientCommPacket): Booleanvar

求救以下Delphi代码,使用C#怎样实现。
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;



很急,能解答者重奖。

谢谢!



[最优解释]
重点是SetLength()函数;SizeOf()函数

Sizeof()等同于int temp=System.Runtime.InteropServices.Marshal.SizeOf(CommData);
SetLength等同于Buf = new byte[temp];
[其他解释]
谢谢楼主,经过今晚的研究与测试,问题已解决。

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

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

热点排行