又有一个错误信息,请大家帮忙 (100分)

  • 主题发起人 主题发起人 Yves
  • 开始时间 开始时间
Y

Yves

Unregistered / Unconfirmed
GUEST, unregistred user!
这个错误是在运行期发生的
内容如下,不知何意,及如何排除请高手指教:
1.jpg

截图展现了 这个错误信息 断点处是 错误信息弹出前的 一个动作
当按下 messagebox 的确定键时 报错
另外还有一个运行期错误:
提示:can only modify an image if it contains a bitmap.
请指教谢谢
 
只能编辑位图
 
您说的是第二个问题吧,我明白了,谢谢
那第一个呢?
请再指教
 
请大家帮帮忙
 
代码??
 
我觉得吧,
我是逐步调试的,就到 按下mssagebox的 确定键后就弹出错误信息,好像不用列出代码吧?
当然我不是保密什么的,只是代码太多,不知道那些有用,那些没用,
我现在感到好像受人欺负似的,就按个确定,就弹出个指针的错误,
帮帮忙:(
 
我贴出 这个 函数的代码,是一个我想玩的游戏
procedure TForm1.onclick(Sender: TObject);
var
mapfile:TextFile ;
cmark : shortstring;
mapln : shortstring;
sigchar:shortstring;
i,j:integer;
vmpath : string;
begin
try
if not opendia.Execute then

begin
showmessage('无文件调入!');
sbar1.SimpleText:='无文件调入!';
exit;
end
else
begin
sbar1.SimpleText:='正在打开文件...';
assignfile(mapfile,opendia.filename);
reset(mapfile);
end;
readln(mapfile,cmark);
if cmark<>omark then
begin
closefile(mapfile);
showmessage('不可识别的地图文件!');
sbar1.SimpleText:='不可识别的地图文件!' ;
end
else
sbar1.SimpleText:='正在读取地图数据...';
readln(mapfile,vmpath);
readln(mapfile,mapcaption);
for i:= 0 to 21 do
begin
readln(mapfile,mapln);
for j:=0 to 26 do
begin
sigchar:=midstr(mapln,j,1);
map[j]:=strtoint(sigchar);
end;

end;
sbar1.SimpleText:='正在读取超人与对手数据...';
readln(mapfile,sigchar);
Bomber_Array_sxPos:=strtoint(sigchar);
readln(mapfile,sigchar);
Bomber_Array_syPos:=strtoint(sigchar);
Bomber_Array_oxPos:=Bomber_Array_sxPos;
Bomber_Array_oyPos:=Bomber_Array_syPos;

Bomber_img.Left := Bomber_Array_sxPos*24 ;
Bomber_img.Top := Bomber_Array_syPos*24;
readln(mapfile,sigchar);
if strtoint(sigchar)>6 then
sigchar:='6';
Setlength(Enemy_Array_sxPos,strtoint(sigchar));
Setlength(Enemy_Array_syPos,strtoint(sigchar));
enemycount:=strtoint(sigchar);
for i:= 1 to strtoint(sigchar) do
begin
readln(mapfile,mapln);
Enemy_Array_sxPos:=strtoint(mapln);
Enemyimg.Left:=Enemy_Array_sxPos*24 ;
readln(mapfile,mapln);
Enemy_Array_syPos:=strtoint(mapln);
Enemyimg.Top:=Enemy_Array_syPos*24 ;
end;
closefile(mapfile);
sbar1.SimpleText:='正在打开地图映射文件';
if not fileExists(vmpath) then
begin
showmessage('地图映射文件不存在');
sbar1.SimpleText:='地图映射文件不存在';
exit;
end
else
bk_img.Picture.LoadFromFile(vmpath);
for i:=1 to 6 do
begin
Enemyimg.Enabled:=true;
Enemyimg.Visible:=true;
end;
bomber_img.Visible:=true;
bomber_img.Enabled:=true;
showmessage('文件打开成功,数据处理完成!');//[red]这里出错[/red]
timer1.enabled:=false;
except
closefile(mapfile);
showmessage('文件打开时发生未知错误');
sbar1.SimpleText:='文件打开时发生未知错误';
form1.FormCreate (form1);
end;
end;
 
你的 timer1 是干什么用的???
把timer1.enabled:=false;
试试呢?
bk_img 是什么?如果是 TBitmap 应该 bk_img.LoadFromFile(vmpath);
而不是 bk_img.Picture.LoadFromFile(vmpath);
另外 bomber_img 叱?
 
timer1.enabled:=false;
试过不行
有_img后缀的名称 是 image 控件
 
你把工种打包发给我,jsxjd@hotmail.com
包括数据,告诉我运行目录。
 
我本是新手,只是在以前高中时用vb写过几个程序,现在这个程序是因我一时气盛(只不过不愿在女友面前丢人),
与人打赌,答应要编个游戏出来,可是一试之下才知甚多险阻,与以前所编大不一样,就如此跌跌撞撞的至于今天,才将
全部代码写出,并编译通过,本自以为只要稍作调试就可成功,谁知却出现如此的错误。
今天一整天我都郁闷的紧(还气急败坏的和父母抄了一架),自知这个错误非己力之所及,眼下假期将尽,赌限逼至,
还望众位大侠下顾援手。

叶辉拜谢
 
可能跟你设置 TImage 有关,先把装入图片的语句注释掉试试!!!!!
 
不行问题依旧
 
你是不是真的给我发了个炸弹!!!
你这程序太难调了,设法跟踪。可能Delphi 有Bug.不会是你的控件惹的祸。
你的主要问题在这儿:
Setlength(Enemy_Array_sxPos,strtoint(sigchar)+1);
//////// +1
Setlength(Enemy_Array_syPos,strtoint(sigchar)+1);
//////// +1
Form 的 OnCreate 头上应加上这个:
for i:=1 to 6 do
begin
Enemyimg:=TImage.Create(self) ;
Enemyimg.parent:=self ;
end;

Form 的 OnDestroy 中应加上这个:
for i:=1 to 6 do
Enemyimg.free;
我想应该可以了,因为一开始我安装了你的控件,发现有问题,
只要选中它就死机。后来我只好卸掉,把有关该控件的全部去
掉。
那个控件可能真有问题,好象帮助中说有Bug,你能选中它而
不死机吗?
 
今晨见到了您在6点时给出的解决方案,想到您凌晨时秉烛为小子费心的情状,
顿时感激得涕澪不已,您这份热情令我千万分感动,您真是一位贵人,在我最需要
帮助时伸出援助之手,如此恩情,小子何敢克当。
另外,我已经按照您的方法改进了程序,果真一蹴而就,欣喜之余更感您功力
深厚若斯实非小子所能想像,您不仅有侠义风范更负绝世武功,这更增添了我对您
的景仰,同时也深深触动了我,我要向您学习--无论是您的美德还是武艺。
千言万语化做一句--万分恩谢。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
948
import
I
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部