-----关于Flash.ocx不能播放非SWf格式的处理----(100分)

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

YuanGuo2001

Unregistered / Unconfirmed
GUEST, unregistred user!
MacroMedai公司的Flash控件,发现如果播放非Swf格式的文件出现
异常,提示为oleexception with message"未知的错误"
EXE格式flash文件可以通过读取其标志位进行判断,
如果不是Flash动画,则Flash.movei就不进行赋值,
但是SWF格式的没有标志的?
我用下面的代码无法捕获:
try
Flash.Movie:=TempFileName;//
except on E:EoleException do
begin
showmessage('无法播放' );
end;
 
没有人知道吗?我用getlasterror 也不行的
 
SWF格式不是可以正常播放吗
 
其实,你这个文件不一定非是非官方标准的,有可能是文件结构损坏,也会报这个错误。
没有办法通过具体的这个来进行容错处理。
 
leezero:swf当然可以播放,但是一些不是flash swf格式的就不行了,就出错了
to 816:你说的对呀,
所以应该有出错处理呀
 
SWF格式的开头3个字节是"FWS"
 
怎么读取?
 
把文件读到内存里或者用流,判断前三位的值。
 
那如果一个文件它的前3位是psw,但是他不是swf文件怎么办?

谁知道这个异常怎么处理??急死人了??

分数不过我可以在加

try
Flash.Movie:=TempFileName;//
except on E:EoleException do
begin
showmessage('无法播放' );
end;
 
Flash.Movie:=TempFileName;//
这个错误不是在赋值(文件名)的时候就产生吧?是不是应该在调Paly的时候?
 
是在在赋值(文件名)的时候就产生
 
其实赋给swf非法的文件名并不会出现错误,不知你是怎么搞的。
最好在选文件名的时候加.swf的filter.
给一个我用的错误处理你看看吧,它工作的很好。
try
with ProgressBar1 do with shockwaveflash1 do
begin
lblFramenum.caption:=format('%d',[FrameNum]);
position:=round(framenum/totalframes*100);
LMDTrackBar1.position:=round(framenum/totalframes*100);
lblFramePercent.caption:=format('(%d%%)',[Position]);
StatusBar1.panels[3].text:='Frame:'+lblFramenum.caption+lblFramePercent.caption;
end;
except
ERRORCOUNT:=ERRORCOUNT+1;
StatusBar1.panels[0].text:='Error:'+inttostr(errorcount);
end;//try
 
不好意思,好久没有上网了,结帖,谢谢各位!
 

Similar threads

D
回复
0
查看
789
DelphiTeacher的专栏
D
D
回复
0
查看
744
DelphiTeacher的专栏
D
D
回复
0
查看
730
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部