2011-06-07 66 views
3

我是一个使用VB6尝试创建基本文本文件程序的新手。基本上在我的工作中,我创建了大量带有标题和可变数据的文本文件,以便为每次创建VB6程序时手动输入每个标题的文档以便自动添加标题,我将输入数据并输出这一切都作为一个文本文件。我完成了大部分工作,但有一部分我做不到。使用VB6生成编号列表

文本文件的一部分是一个带点后面的编号列表。 EG:

HEADING
01. CHEESE
02.巧克力
03. BREAD

等。

这个列表在每个文件和不同的长度上是不同的,所以可能是4个项目,可能是20个。此刻我刚刚得到一个纯文本框,并且每次都按照上面那样手动输入数据,数字。我想要做的是在列表前面自动创建数字,点和空格。所以,我可以进入名单的是

CHEESE
巧克力
BREAD

,当我生成文本文件中的列表自动编号。用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 
+1

是的,你尝试过使用一个循环? – 2011-06-07 14:38:47

回答

5

您可以:

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 
+0

+1比我的实现还要干净。 – RiddlerDev 2011-06-07 14:50:15

+0

非常感谢,但正如我所说,我是一个新手,不知道这段代码会去哪里。我已经在上面编辑了我的当前代码,用于提交表单上的提交按钮,而我试图让它工作的文本框是txttracks。谢谢。 – 2011-06-07 15:27:46

+1

尝试用'.writeline(TextToNumberedList(txttracks.text)&vbnewline)替换'.writeline(txttracks&vbNewLine)'' – 2011-06-07 15:47:24

1

也许我误解你的问题,但不能你刚才拆分文本框的内容转换成使用编号的数组索引数组和环比的? Basic example

+0

正如我所说,我几乎是刚刚在大学学过基础知识的新手,但我不确定这是我的意思,不是。为了简化它,想象我在文本框中写入这三个单词并使用.writeline将它们写入文本文件。它们将被打印,因为它们是我想要做的是自动编号它们,或者当我将它们输入到txt字段中或当它们被输出到文本文件时。 – 2011-06-07 14:47:24

+2

@Simon K同时你有一个答案(来自@Alex K.),在代码中做了我的答案在散文中的作用。 – Jorik 2011-06-07 14:56:31

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 

你可以看中,并检查上界获得的长度和垫数字和类似的东西,但这应该让你开始。