一个VFP数据类型的问题

wangzhao1981 2003-08-22 06:52:53
是一个定时器,用VFP 6.0编的,现在有些问题想请教.我用了timer控件,打算通过用户输入的方式来改变其interval属性的值,就是用户输入text1的值,由于interval值的单位是毫秒,所以我就把text1(就是添入的时间长短,单位是秒)的值乘以60000,然后把结果赋给interval。现在问题就在这,用户输入text1的值是N(数值)型的,而60000的类型是U型的,类型不匹配。我找不到一个合适的函数来改变它的类型。还有一个与上面有关的例子,是《FOXPRO简明教程》(foxpro for windows 2.5b)里的:“n=3 &&把数值3赋给内存变量n,n是数值型内存变量”在这句话里的n就是数值型的,但是在VFP 6.0里这个n就没有类型,是不是foxpro for windows 2.5b里能用的在VFP 6.0里不见得都能用,怎么使n成为数值型的内存变量或者是成为其他的数据类型?
...全文
135 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
boomit 2003-08-25
  • 打赏
  • 举报
回复
这个问题总之是很明了的。。。呵。。。我也糊涂了,算错了。。。是一分钟。谢谢指点。。
fj_jiangqi 2003-08-23
  • 打赏
  • 举报
回复
text1中的数字是字符类型,要给它赋数字初值就能解决这个问题。
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊
boomit 2003-08-23
  • 打赏
  • 举报
回复
大家都说了,我也觉得没问题的。第一,输入的是秒,应该乘1000就是毫秒数。第二,你的text1.value确定是什么类型,我觉得是字符型。问题应该在这吧。你先赋初值0.00就会是数值型了。数值型的乘60000没问题。第三,你可以乘积太大了,超过interval的限制,具体最大多少,我也不知道,不过你*60000,我不明白,这输入1 就是60分钟了。。。。这有什么意义。。。参考。。。而已。。。
wangzhao1981 2003-08-23
  • 打赏
  • 举报
回复
对不起,我写错了,单位是1分钟才对,我是想设计个程序,自己设定时间,多少分钟后提醒自己.
interval属性是N,text1中自己添的数值是N型的,interval*text1*60000就是我要得时间,但问题出在60000上,提示说类型不匹配,我试了试小的数还是这样,所以我觉得问题就是60000的类型,但是把60000附给一个变量还是不行,执行?TYPE()后显示是U
dfwxj 2003-08-23
  • 打赏
  • 举报
回复
楼主的想法没错,

只是文本框的值要预置为0,即数值型,

楼上的朋友仔细计算一下楼主输入1是多少分钟

1*60000/1000/60=1分钟,什么时候成60分钟了?

虽然时间控件的Interval是以毫秒为单位,但时间控件的响应时间是1/18秒
mgan 2003-08-22
  • 打赏
  • 举报
回复
1.Interval 指定计时器控制的 Timer 事件之间的时间间隔毫秒数。设计和运行时可用。
语法
Timer.Interval[ = nTime]
设置
nTime
指定 Timer 事件之间的时间间隔毫秒数。默认值为 0,不触发 Timer 事件。
2.你在赋值的时候 只是代表给一个变量赋值 也就是确定了他的类型了


——————————@_@————————
good good study
day day up
___________________^@^_________________

lubf 2003-08-22
  • 打赏
  • 举报
回复
这个看看书都可以解决的。
老猿的书房 2003-08-22
  • 打赏
  • 举报
回复
出现这个问题可能是乘积过大了,超出了计算机的计算范围(弱弱的问,哪位高手知道VFP中NUMBER最大取值范围是多少,拜托告知),其实你不如这么解决这个问题。

设定属性
timer1.interval=1000 && 设定触发时间为1秒

表单LOAD事件
public iSuffix,iTime && 存放当前的触发次数和总共需要的触发次数
iTime=0

Command1的Click事件
if type('ThisForm.Text1.Value')="C"
iSuffix=Val(ThisForm.Text1.Value)
else
iSuffix=ThisForm.Text1.Value
endif

Timer1的Timer事件
if iTime=iSuffix
<你要执行的动做>
iTime=0
else
iTime=iTime+1
endif
******************************************************
也就是将需要的秒数存入变量,并用另一个变量计数,每次触
发时钟后,都检测是否是需要的秒数,不是则将计数器加一
以等待下一次触发
老猿的书房 2003-08-22
  • 打赏
  • 举报
回复
我记得TIMER控件中,1秒等于1000毫秒啊,为什么要乘60000
fj_jiangqi 2003-08-22
  • 打赏
  • 举报
回复
interval应该是N型才对。
fox中变量重新赋值,类型也随之变化。
-------------------------
我流落在凄凉的世界里-孤苦伶仃
我过着动荡无助的生活-四处漂泊

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧