如何才能输入大于65535的数

qiangshou2301 2009-08-31 09:48:38
我定义了个Text,只能输入小于65535的数,大于65535的改为什么啊?
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Text12.Text = Temp15
Close #15
End If
...全文
475 44 打赏 收藏 转发到动态 举报
写回复
用AI写文章
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 qiangshou2301 的回复:]
巫师的
VB codeOptionExplicitDim lngStartTimeAsLongDim lngLenAsLongPrivate DeclareFunction GetTickCount Lib"kernel32" ()AsLongPrivateSub Command1_Click()
lngLen= Val(Text1.Text)'取得间隔毫秒数 lngStartTime= GetTickCountEnd SubPrivateSub Form_Load()
Timer1.Enabled=false
Timer1.Interval=20End SubPrivateSub Timer1_Timer()If GetTickCount- lngStartTime>= lngLenThen
lngStartTime= GetTickCount'记录新的起点'以下添加你的代码EndIfEnd Sub
也是time1一直运行 不起作用
[/Quote]

Timer是一直在运行,但是里面有一个判断语句啊,你把你的代码添加到判断语句里面,我给你指出添加代码的地方了。
Tiger_Zhao 2009-09-01
  • 打赏
  • 举报
回复
Option Explicit

Private m_CountDown As Long

Private Sub Command1_Click()
m_CountDown = CLng(Text1)
Label1.Caption = TimeSerial(0, 0, m_CountDown)
Label1.BackColor = vbGreen
Timer1.Enabled = True
End Sub

Private Sub Form_Load()
Timer1.Enabled = False
Timer1.Interval = 1000
End Sub

Private Sub Timer1_Timer()
m_CountDown = m_CountDown - 1
Label1.Caption = TimeSerial(0, 0, m_CountDown)
If m_CountDown <= 0 Then
Label1.BackColor = vbRed
Timer1.Enabled = False
End If
End Sub
东方之珠 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 modest 的回复:]
可替代VB自带的Timer控件的Timer类
一劳永逸
[/Quote]

家中宝物也拿出来了啊!
脆皮大雪糕 2009-09-01
  • 打赏
  • 举报
回复
哎,不解释了。
有空你可以理解一下我在timer事件里面
TimerCount = TimerCount - 1 的作用以及If TimerCount <= 0 判断的意图。
没空的话就算了。
迈克揉索芙特 2009-09-01
  • 打赏
  • 举报
回复
of123 2009-09-01
  • 打赏
  • 举报
回复
超长 Timer:

Dim lTimerId As Long
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long

Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long

Private Sub TimerProc(ByVal lHwnd As Long, ByVal lMsg As Long, ByVal lTimerId As Long, ByVal lTime As Long)

Dim lResult As Long
lResult = StopTimer(lTimerId)
Call InsertYourProcessNameHere
'code to be executed after interval
End Sub

Public Sub StartTimer(lInterval As Long) 'convert interval to milliseconds prior to passing
lTimerId = SetTimer(0, 0, lInterval, AddressOf TimerProc)
End Sub

Public Function StopTimer(lTimerId As Long) As Long
'must pass the TimerId returned by SetTimer
StopTimer = KillTimer(0, lTimerId)
End Function

'调用方式
Call StartTimer(Val(Text1))
jhone99 2009-09-01
  • 打赏
  • 举报
回复
15楼是连续触发,如果只触发一次这样改
Private lngNum As Long
Private lngMod As Long

Private Sub Command1_Click()
Timer1.Enabled = False

If Val(Text1) > 65535 Then
lngNum = Val(Text1) \ 60000
lngMod = Val(Text1) Mod 60000
Timer1.Interval = 60000
Else
Timer1.Interval = Val(Text1)
End If

Timer1.Enabled = True

End Sub

Private Sub Form_Load()
Timer1.Enabled = False
lngNum = 0
lngMod = 0

End Sub

Private Sub Timer1_Timer()
Static lngRun As Long

lngRun = lngRun + 1

If lngRun = lngNum Or lngNum = 0 Then
If lngMod > 0 Then
Timer1.Interval = lngMod
lngMod = 0
Else
'lngRun = 0
'Call Command1_Click
Timer1.Enabled = False'只是触发一次加这个

'……你要在timer中运行的代码
End If
End If

End Sub
jhone99 2009-09-01
  • 打赏
  • 举报
回复
这个没有那么复杂,把用你的代码贴出来,我给你修改一下
qiangshou2301 2009-09-01
  • 打赏
  • 举报
回复
算了 没有弄出来 几种方案结合我自己的不是一直运行 就是只运行60s 小弟太愚了 谢谢各位兄弟了
qiangshou2301 2009-08-31
  • 打赏
  • 举报
回复
LS各位真是高手 一眼能看出来 我真还不知道是timer控件的问题 就说大于1分钟多点不知道出错原因 我下午来试试看看 先谢各位了 下午出结果 thanks!
csdn_风中雪狼 2009-08-31
  • 打赏
  • 举报
回复
不懂
qiangshou2301 2009-08-31
  • 打赏
  • 举报
回复
巫师的
Option Explicit
Dim lngStartTime As Long
Dim lngLen As Long
Private Declare Function GetTickCount Lib "kernel32" () As Long

Private Sub Command1_Click()
lngLen = Val(Text1.Text) '取得间隔毫秒数
lngStartTime = GetTickCount
End Sub

Private Sub Form_Load()
Timer1.Enabled = false
Timer1.Interval = 20
End Sub
Private Sub Timer1_Timer()
If GetTickCount - lngStartTime >= lngLen Then
lngStartTime = GetTickCount '记录新的起点
'以下添加你的代码
End If
End Sub

也是time1一直运行 不起作用
chinaboyzyq 2009-08-31
  • 打赏
  • 举报
回复
timer控件,最大间隔时间65535毫秒,也就是一分钟多一点,没办法输入更大值。
想timer控件大于65秒后去执行你的任务可向下面这样做:


Option Explicit
Dim dtNextTime As Date
Const N As Integer = 5 '五分钟执行一次任务(自己改值)

Private Sub Form_Load()
Timer1.Interval = 500 '............半秒一查定时器
dtNextTime = DateAdd("n", N, Now) '当前时间加N分钟后执行第一次任务
'"n"改成"s"可以N秒后执行一次任务
'"n"改成"d"可以N天后执行一次任务
End Sub

Private Sub Timer1_Timer()
'根据dtNextTime值(N分钟触发一次定时器1的发送任务)

If Now >= dtNextTime Then
Timer1.Enabled = False
Debug.Print "时间到了,我执行任务" '你的命令在这
dtNextTime = DateAdd("n", N, Now)
Timer1.Enabled = True
End If
End Sub


qiangshou2301 2009-08-31
  • 打赏
  • 举报
回复
jhone99能运行大于65535ms的 但是就是不能停止 比如我运行2分钟 就不停止 一直在往下位机发数据 我是想运行2分钟Label变为红色,不再发送数据到下位机
qiangshou2301 2009-08-31
  • 打赏
  • 举报
回复
重新表述下啊:
text里输入时间值,比如想输入0-300s之间的任何个数值,即0-300000ms或者更大的值,在输入的某个时间值VB往下位机发送数据,到了时间就停止发送。


chewinggum兄的“Timer1.Interval = 1000”我觉得有点问题,这样我就只执行1000ms,根本不运行“TimerCount = 120 '计时2分钟"

Option Explicit

Private TimerCount As Long '计数变量

Private Sub Command1_Click()
'测试用例
TimerCount = 120 '计时2分钟
Timer1.Enabled = True '开始计时
End Sub

Private Sub Form_Load()
Timer1.Enabled = False '初始状态下禁用timer
Timer1.Interval = 1000 '每1秒计数一次
End Sub

Private Sub Timer1_Timer()
TimerCount = TimerCount - 1 '每秒计数变量-1
Debug.Print "还剩" & TimerCount & "秒"
If TimerCount <= 0 Then
MsgBox "时间到了"
Timer1.Enabled = False '停止计时
End If
End Sub


在看jhone99和巫师的怎么样
脆皮大雪糕 2009-08-31
  • 打赏
  • 举报
回复
LZ是想定比较长的时间是吧,可以让timer每1000毫秒触发一次,然后在每次timer事件中进行一次计数判断


Option Explicit

Private TimerCount As Long '计数变量

Private Sub Command1_Click()
'测试用例
TimerCount = 120 '计时2分钟
Timer1.Enabled = True '开始计时
End Sub

Private Sub Form_Load()
Timer1.Enabled = False '初始状态下禁用timer
Timer1.Interval = 1000 '每1秒计数一次
End Sub

Private Sub Timer1_Timer()
TimerCount = TimerCount - 1 '每秒计数变量-1
Debug.Print "还剩" & TimerCount & "秒"
If TimerCount <= 0 Then
MsgBox "时间到了"
Timer1.Enabled = False '停止计时
End If
End Sub

jhone99 2009-08-31
  • 打赏
  • 举报
回复
vb系统中提供了固有计时器timer控件,通过给计时器控件的interval属性设置不同的数值,就可以控制计时器运行的时间间隔,但该属性是一个双字节的整型变量,最大值只能设置为65535,即只有65535毫秒,约一分钟多一点,在需要长时间计时时,该控件就无能为力了
jhone99 2009-08-31
  • 打赏
  • 举报
回复
Timer3.Interval = Temp15 * 1000

这个不允许
jhone99 2009-08-31
  • 打赏
  • 举报
回复
试验没有问题呀,你的真正问题是什么?
qiangshou2301 2009-08-31
  • 打赏
  • 举报
回复
还是没有找到Integer变量 ,下面这几句是写入保存值:
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Text12.Text = Temp15
Close #15
End If

下面这几句是读入,差不多
If Dir("15.txt") <> "" Then
Dim Temp15 As String
Open App.Path & "\15.txt" For Input As #15
Line Input #15, Temp15
Close #15
End If
Timer3.Interval = Temp15 * 1000 '运用Temp15,即Text12的值。
加载更多回复(24)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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