注册 登录
编程论坛 VB6论坛

vb6 文本框的内容自动保存成文本,文本的文件名怎么设置成变量。

xieyunkao 发布于 2016-12-25 12:08, 5203 次点击
当文本框输入的内容大于4个字符后,自动保存到硬盘中,格式是txt,每次输入文本框的内容大于4个字符就保存1次,文件名每次都不能一样。比喻,第1次保存成1.txt,第二次保存成2.txt。
跪求赐教
我现在只能做到保存成1个文件,不懂怎么将文件名做成变量
Private Sub Text1_Change()
If Len(Text1) > 4 Then
Timer1.Enabled = True
Timer1.Interval = 100
Change = 1
End If
End Sub

Private Sub Timer1_Timer()
Dim FF As Long
FF = FreeFile
Open "D:\1.txt" For Output As #FF '
Print #FF, Text1
Close #FF
Text1 = ""
Timer1.Enabled = False
End Sub
7 回复
#2
snrtjat2016-12-26 09:48
设置一个全局变量,每写一次就在之前的基础上+1即可。
程序代码:

Option Explicit
Dim Change As Integer  '全局变量

Private Sub Form_Load()
Change = 0   '程序启动时定义初始值
End Sub

Private Sub Text1_Change()

 If Len(Text1) > 4 Then
     Timer1.Enabled = True
     Timer1.Interval = 100
     Change = Change + 1   '每写一次就+1,用于区别文件,当然你也可以使用Now来代替这个变量。
  End If
End Sub

Private Sub Timer1_Timer()

 Open App.Path & "\" & Change & ".txt" For Output As #1  '以全局变量为文件名进行Text1的信息保存
    Print #1, Text1

 Close #1

 Text1 = ""

 Timer1.Enabled = False

 End Sub


[此贴子已经被作者于2016-12-26 09:51编辑过]

#3
xieyunkao2016-12-27 20:23
回复 2楼 snrtjat
谢谢你!问题已经解决了
#4
肇励影2017-01-03 18:00
我觉得没必要加个钟,题目中没讲计时间隔。
直接用个boolean变量就行了。

(个人观点,不喜勿喷)
#5
ZHRXJR2017-01-12 14:14
同意《肇励影》的观点,而且我认为不能在  Text1_Change 事件中,应该在 Text1_LostFocus 事件中:
因为在  Text1_Change 事件中,只要文本框中数据有变化,就会存储一个txt文件,比如文本框中输入20个字符,那么就存储了20个txt文件。
而在 Text1_LostFocus 事件中,是文本框失去焦点后发生的事件,这样在文本框输入完成后,鼠标点击其他控件,存储一个txt文件的。
程序代码:
Dim SS As Integer

Private Sub Form_Load()
SS = 0   '初始化变量
End Sub

Private Sub Text1_LostFocus()

 If Len(Text1.Text) > 4 Then
     SS = SS + 1
      Open App.Path & "\" & SS & ".txt" For Append As #1   'Append 是追加方式
      Write #1, Text1.Text    'Write方法是写入数据
       Close #1
       Text1.Text = ""
  End If
End Sub

'不需要Timer1控件程序更简单
#6
yz10252017-01-13 00:09
以下是引用ZHRXJR在2017-1-12 14:14:08的发言:

同意《肇励影》的观点,而且我认为不能在  Text1_Change 事件中,应该在 Text1_LostFocus 事件中:
因为在  Text1_Change 事件中,只要文本框中数据有变化,就会存储一个txt文件,比如文本框中输入20个字符,那么就存储了20个txt文件。
而在 Text1_LostFocus 事件中,是文本框失去焦点后发生的事件,这样在文本框输入完成后,鼠标点击其他控件,存储一个txt文件的。
Dim SS As Integer

Private Sub Form_Load()
SS = 0   '初始化变量
End Sub

Private Sub Text1_LostFocus()
 If Len(Text1.Text) > 4 Then
     SS = SS + 1
      Open App.Path & "\" & SS & ".txt" For Append As #1   'Append 是追加方式
      Write #1, Text1.Text    'Write方法是写入数据
       Close #1
       Text1.Text = ""
  End If
End Sub

'不需要Timer1控件程序更简单


Print #1, 和 Write #1, 兩種是差在哪裏?
#7
ZHRXJR2017-01-13 08:29
回复 6楼 yz1025
Print #1 语句,输出的时候,字符串不会自动加上任何符号,原样输出,也不会用逗号分隔每一个数据,适合用Line Input #1 语句读出。
Write #1 语句,输出的时候,字符串会自动加上""双引号,并且中间会用,逗号分隔开来每一个数据,适合用Input #1 语句读出。
一般应该使用 Write #1 语句,在 Open 中与 Input #1 配用。
例如:二个字符串,"中国人民"与"解放军",用Print #1 语句存储,是 中国人民解放军,用 Write #1 语句存储,是 "中国人民","解放军"

[此贴子已经被作者于2017-1-13 09:13编辑过]

#8
wube2017-01-13 15:09
以下是引用ZHRXJR在2017-1-13 08:29:51的发言:

Print #1 语句,输出的时候,字符串不会自动加上任何符号,原样输出,也不会用逗号分隔每一个数据,适合用Line Input #1 语句读出。
Write #1 语句,输出的时候,字符串会自动加上""双引号,并且中间会用,逗号分隔开来每一个数据,适合用Input #1 语句读出。
一般应该使用 Write #1 语句,在 Open 中与 Input #1 配用。
例如:二个字符串,"中国人民"与"解放军",用Print #1 语句存储,是 中国人民解放军,用 Write #1 语句存储,是 "中国人民","解放军"

意思等同于
Temp(0) = "中国人民": Temp(1) = "解放军"
Print #1, Chr(34) & Join(Temp(), Chr(34) & ",") & Chr(34)
果然是简单多了~又学到一项~
1