C++代码转换(87分),在线等待........... ( 积分: 87 )

  • 主题发起人 主题发起人 网络3K
  • 开始时间 开始时间

网络3K

Unregistered / Unconfirmed
GUEST, unregistred user!
如题:
void CALLBACK SwapDSP(HDSP handle, DWORD channel, void *buffer, DWORD length, DWORD user)
{
short *s=buffer;
for (;length;length-=4,s+=2) {
short temp=s[0];
s[0]=s[1];
s[1]=temp;
}
}
 
procedure SwapDSP(HDSP:THandle;channel:DWORD;buffer:Pointer;Length:DWORD;user:DWORD);
var
s:^integer;
temp: integer;
i: integer;
begin

s:=buffer;
i:=length;
while(i>=0)do
begin

temp:=s[0];
s[0]:=s[1];
s[1]:=temp;
length:=length-4;
s:=s+2;
end;

end;
 
procedure SwapDSP(
handle : HDSP;
channel : DWORD;
buffer : Pointer;
length : DWORD;
user : DWORD
);
stdcall;
var
s : PShortInt;
s1 : PShortInt;
temp : ShortInt;
begin

s := buffer;
while length > 0do

begin

temp := s^;
s1 := s;
Inc(s1);
s^ := s1^;
s1^ := temp;
length := length - 4;
Inc(s, 2);
end;

end;
 
这好像是个回调函数,声明后面得加调用方式的
 
嗯,忘了,补上了
 
是回调函数
 
zhaokaien
的代码不能工作啊
 
short *s=buffer;

好象是指针加动态数组吗?
 
看看老外改的代码,和我们有什么不同?
type // for both procedures
TPanRecEx = array[0..1] of SMallInt;
PPanRec = ^TPanRecEx;


procedure SwapDSP(handle: HDSP;
channel: DWORD;
buffer: Pointer;
length: DWORD;
user: DWORD);
stdcall;
var
a: DWORD;
P: PPanRec;
temp:SmallInt;

begin

a := 0;
P := buffer;
while (a < (length div 4))do

begin

temp:= P[0];
P[0]:=P[1];
P[1]:=temp;
inc(P,2);
a := a + 2;
end;

end;
 
下雨了,收衣服了。
 
多人接受答案了。
 
后退
顶部