【问题标题】:Generating a numbered list with VB6VB6 生成编号列表
【发布时间】:2011-06-07 14:28:55
【问题描述】:

我是一个新手,使用VB6 尝试创建一个基本的文本文件程序。基本上在我的工作中,我创建了很多带有标题的文本文件,然后是可变数据,这样每次我创建一个会自动添加标题的 VB6 程序时,我都会手动输入带有每个标题的文档,我会输入数据并输出这一切都作为一个文本文件。我完成了大部分工作,但有一部分我做不到。

文本文件的一部分是一个编号列表,后面有一个点。例如:

标题
01. 奶酪
02. 巧克力
03. 面包

等等。

每个文件中的列表不同,长度也不同,所以可能是 4 个项目,可能是 20 个。目前我只有一个纯文本框,我每次都手动输入上面的数据,数字.我想做的是在列表前面自动创建数字、点和空格。所以我可以按原样输入列表

奶酪
巧克力
面包

当我生成文本文件时,列表会自动编号。 VB6有可能吗?我知道这似乎是一个小细节,但我创建了数百个这样的文件,并且为每个文件做的工作越少越好。

Private Sub create_Click()
Dim fso
Dim file As String
file = "C:\Textfile.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(file) Then
    fso.DeleteFile file, True
End If
Const ForAppending = 8
Set filesys = CreateObject("Scripting.FileSystemObject")
Set filetxt = filesys.OpenTextFile("C:\Textfile.txt", ForAppending, True)
With filetxt
.writeline (txtArtist & vbNewLine)
.writeline ("SOURCE" & " (" & Combo1 & " #" & txtsource & ")" & ":")
.writeline (txtequip & vbNewLine)
.writeline (Combo2 & ":")
.writeline (txttransfer & vbNewLine)
.writeline ("GENERATION:")
.writeline (txtgen & vbNewLine)
.writeline ("LENGTH:")
.writeline (txtlength & vbNewLine)
.writeline ("NOTES:")
.writeline (txtnotes & vbNewLine)
.writeline ("TRACKS:")
.writeline (txttracks & vbNewLine)
.writeline ("MD5 FINGERPRINTS:")
.writeline (txtmd5 & vbNewLine)
.writeline ("TRANSFERRED BY:")
.writeline (txttransferby & vbNewLine)
.writeline ("**PLEASE DO NOT ENCODE TO LOSSY FORMATS OR SELL!**")
.Close
End With
Shell "notepad.exe C:\Textfile.txt", vbNormalFocus
End Sub

【问题讨论】:

  • 是的,您尝试过使用循环吗?

标签: list file text vb6 numbered


【解决方案1】:

你可以:

Text1.Text = TextToNumberedList(Text1.Text)

Function TextToNumberedList(strData As String) As String
    Dim arr()  As String
    Dim i      As Long
    arr = Split(strData, vbCrLf)
    For i = 0 To UBound(arr)
        arr(i) = Format$(i + 1, "00") & ". " & arr(i)
    Next

    TextToNumberedList = Join(arr, vbCrLf)
End Function

【讨论】:

  • 非常感谢,但正如我所说,我是一个新手,不知道这段代码会去哪里。我已经在我的表单上的提交按钮的当前代码上方进行了编辑,我试图让它工作的文本框是 txttracks。谢谢。
  • 尝试用.writeline (TextToNumberedList(txttracks.text) & vbnewline)替换.writeline (txttracks & vbNewLine)
  • 效果很好,非常感谢大家的回答。
【解决方案2】:

你可能想要做这样的事情(在我的脑海中,所以请原谅语法错误)......

   'Split The Text
   Dim YourArray As String()
   YourArray = Split(Input, vbNewLine)

   Dim Counter As Long
   Dim OutputString As String
   For Counter = 0 To UBound(YourArray)
      OutputString = Counter & ". " & YourArray(Counter)
   Next

您可以花点时间检查上限以获取长度并填充数字之类的东西,但这应该可以帮助您入门。

【讨论】:

    【解决方案3】:

    也许我误读了您的问题,但您不能将文本框的内容拆分为一个数组并使用数组索引进行编号循环吗? Basic example.

    【讨论】:

    • 正如我所说,我是一个刚刚在大学学习基础知识的新手,但我不确定我的意思是不是这样。为了简化它想象我将这三个单词写入文本框并使用 .writeline 将它们写入文本文件。它们将按原样打印,我要做的是在将它们输入 txt 字段或将它们输出到文本文件时自动编号。
    • @Simon K 同时你得到了一个答案(来自@Alex K.),它在代码中的作用与我在散文中的答案相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    相关资源
    最近更新 更多