小弟弟我不懂Delphi的东西,哪位高手帮我翻译成C语言,一定加分! type
PBArray = ^TBArray;
TBArray = array[0..pred(High(Integer))] of Byte;
var
SizeAtEnd : Integer;
LeftOver : Integer;
begin if SizeAtEnd >= Size then begin
{can move data to output queue in one block} Move(Buf^, OBuffer^[OBufHead], Size);
if SizeAtEnd = Size then
OBufHead := 0
else
Inc(OBufHead, Size);
end else begin { need to use two moves }
Move(Buf^, OBuffer^[OBufHead], SizeAtEnd);
LeftOver := Size - SizeAtEnd;
Move(PBArray(Buf)^[SizeAtEnd], OBuffer^, LeftOver);
OBufHead := LeftOver;
end;end
PBArray = ^TBArray;
TBArray = array[0..pred(High(Integer))] of Byte;
var
SizeAtEnd : Integer;
LeftOver : Integer;
begin if SizeAtEnd >= Size then begin
{can move data to output queue in one block} Move(Buf^, OBuffer^[OBufHead], Size);
if SizeAtEnd = Size then
OBufHead := 0
else
Inc(OBufHead, Size);
end else begin { need to use two moves }
Move(Buf^, OBuffer^[OBufHead], SizeAtEnd);
LeftOver := Size - SizeAtEnd;
Move(PBArray(Buf)^[SizeAtEnd], OBuffer^, LeftOver);
OBufHead := LeftOver;
end;end
TBArray = array[0..pred(High(Integer))] of Byte;
Move(Buf^, OBuffer^[OBufHead], SizeAtEnd);
Move(PBArray(Buf)^[SizeAtEnd], OBuffer^, LeftOver);
直译的代码:
typedef unsigned short[7FFFFFFF] TBArray ;
typedef TBArray* PBArray
int SizeAtEnd,leftOver;if(SizeAtEnd>=Size)
{
//can move data to output queue in one block
memcpy(Buf,&(*OBuffer[OBufHead]),Size);
if(SizeAtEnd==Size)
OBufHead=0;
else
OBufHead+=Size;
}
else
{
//need to use two moves
memcpy(Buf,&(*OBuffer[OBufHead]),SizeAtEnd);
LeftOver=Size-SizeAtEnd;
memcpy(&(PBArray)Buf[SizeAtEnd],OBuffer,LeftOver);
OBufHead=LeftOver;
}