运行时,一下量具出现问题,都是“实时错误 380 无效的属性值”。
Slider.Max = Int(Val(MPlayer.currentMedia.duration))
lblTimeEnd.Caption = Str(MPlayer.currentMedia.durationString)但是,在调试时却一点问题都没有问题(包括直接按F8调试)。
这让小虾米俺束手无策了
Slider.Max = Int(Val(MPlayer.currentMedia.duration))
lblTimeEnd.Caption = Str(MPlayer.currentMedia.durationString)但是,在调试时却一点问题都没有问题(包括直接按F8调试)。
这让小虾米俺束手无策了
原句为Slider.Max = MPlayer.currentMedia.duration
后来改成Slider.Max = Val(MPlayer.currentMedia.duration)
Slider.Max = Int(MPlayer.currentMedia.duration)
Slider.Max = Int(Val(MPlayer.currentMedia.duration))
问题无法解决,用容错语句条过后,Slider.Max无法获得MPlayer.currentMedia.duration中的值。
但是,用F8和Shift+F8调试时,却没有任何问题,实在是太郁闷了。
以下见MSDN的说明:
属性值无效(错误 380)
给属性赋予了一个不适当的值。此错误产生的原因及解决方法如下:
试图为对象或控件的属性设置允许范围之外的值。
把属性的值改为有效的设置值。例如,MousePointer 属性必须被设为一个从 0 到 15 或 99 的整数。
If Val(MPlayer.currentMedia.duration) > 0 Then
Slider.Max = Val(MPlayer.currentMedia.duration)
Else
Slider.Max = 1
End If
MPlayer.currentMedia.duration=246.264设断点后,只要是手动F8一步一步走那几行代码,就没有任何问题。
Slider.Max也被正确赋值了,得到246.但去掉断点后,F5运行后,仍有问题。
我曾怀疑过Slider.Max属性的类型是Integer,试过用任何我知道的办法把MPlayer.currentMedia.duration的值转换成整型,都无济于事。而且我已经排除是MPlayer.currentMedia.duration的值的问题了。
是不是我的这句代码写错了?
MPlayer.currentMedia.getItemInfo (duration)
错误并不在这几行代码上
而是我在用MPlayer.URL读取文件地址后直接获得文件的总时长
但这时控件还没有把文件读完,还没有得到MPlayer.currentMedia.duration的值
而且MPlayer.currentMedia.duration的值要在文件播放时才能获得
所以MPlayer.currentMedia.duration的值一直是0当我手动调试的时候,虽然程序被我断下来了,但是控件并没有停止运行
控件读取文件的速度比我按F8的速度要快,所以当我运行到
Slider.Max = MPlayer.currentMedia.duration时,文件已经读取完毕,
MPlayer.currentMedia.duration的值自然就得到了246.264
所以在调试时没有出现任何问题,而正常运行却总是报错。后来我用一个Timer监视MPlayer.playState的状态,再根据状态决定是否读取
MPlayer.currentMedia.duration的值,至此问题不再出现。在这里我谢谢各位的帮助,这也是你们的回答启发的我,谢过,谢过。
猪春假期间大家都快快乐乐!