各位大侠,来俺就给分!程序中的最后的唯一问题

zfz112 2006-01-21 08:17:29
偶是DELPHI的菜鸟,修改一大型游戏程序中的一段代码。
最后出了这样一个问题。偶实在是才开始动DELPHI,还希望大家帮我看看,谢谢了!

procedure TWMImages.LoadDxImage (position: integer; pdximg: PTDxImage);
var
imginfo: TWMImageInfo;
ddsd: DDSURFACEDESC;
SBits, PSrc, DBits: PByte;
n, slen, dlen: integer;
begin
Stream.Seek (position, 0);
Stream.Read (imginfo, sizeof(TWMImageInfo)-4);
if UseDIBSurface then begin //DIB»ç¿ë ¹ö±× ÀÖÀ½
try
lsDib.Clear;
lsDib.Width := imginfo.Width;
lsDib.Height := imginfo.Height;
except
end;
lsDib.ColorTable := MainPalette;
lsDib.UpdatePalette;
DBits := lsDib.PBits;
Stream.Read (DBits^, imginfo.Width * imgInfo.Height);

pdximg.px := imginfo.px;
pdximg.py := imginfo.py;
pdximg.surface := TDirectDrawSurface.Create (FDDraw);
pdximg.surface.SystemMemory := TRUE;
pdximg.surface.SetSize (imginfo.Width, imginfo.Height);
pdximg.surface.Canvas.Draw (0, 0, lsDib);
pdximg.surface.Canvas.Release;

pdximg.surface.TransparentColor := 0;

end else begin

slen := WidthBytes(imginfo.Width);
GetMem (PSrc, slen * imgInfo.Height);
SBits := PSrc;
Stream.Read (PSrc^, slen * imgInfo.Height);
try
pdximg.surface := TDirectDrawSurface.Create (FDDraw);
pdximg.surface.SystemMemory := TRUE;
pdximg.surface.SetSize (slen, imginfo.Height);
//pdximg.surface.Palette := MainSurfacePalette;

pdximg.px := imginfo.px;
pdximg.py := imginfo.py;

ddsd.dwSize := SizeOf(ddsd);
pdximg.surface.Lock (TRect(nil^), ddsd);
DBits := ddsd.lpSurface;
for n:=imginfo.Height-1 downto 0 do begin
SBits := PByte (Integer(PSrc) + slen * n);
Move(SBits^, DBits^, slen);
Inc (integer(DBits), ddsd.lPitch);
end;
pdximg.surface.TransparentColor := 0;
finally
pdximg.surface.UnLock (ddsd.lpSurface);//此处为出错的一行!!!!!!!
FreeMem (PSrc);
end;
end;
end;

错误提示:too many actual parameters.
麻烦大家解释下这句话的意思,然后告诉我怎样修改,OK?谢谢。
这是程序中的一小部分,如果需要全部的话我也可以复制出来。
...全文
75 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
clasj 2006-01-22
pdximg.surface.UnLock;
就可以了吧,不用加参数吧。
回复
5201314 2006-01-21
太多的实参了
回复
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

1566

社区成员

Delphi 网络通信/分布式开发
申请成为版主
社区公告
暂无公告