I'm a novice using VB6 to try and create a basic text file program. Basically in my work I create lots of text files with headings and then variable data so to save me manually typing the document with each heading every time I created a VB6 program which would automatically add the headings, I would enter the data and it would output it all as a text file. I got most of it done, but there is one part I can't do.
One part of the text file is a numbered list with a dot after it. EG:
HEADING
01. CHEESE 02. CHOCOLATE 03. BREADand so on.
The list is different in each file and a different length, so could be 4 items, could be 20. At the moment I've just got a plain TextBox and I manaully enter the data as above each time, with the numbers. What I would like to do is have the number, dot and space automatically created in front of the list. So I could just enter the list as is
CHEESE
CHOCOLATE BREADand when I generate the text file the list is automatically numbered. Is that possible with VB6? I know it seems like a small detail but I create hundreds of these files and the less effort I can make it for each one the better.
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
You can:
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
You will probably want to do something like this (off top of my head so forgive syntax errors)...
'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
You can get fancy and check the upper bounds to get the length and pad the numbers and stuff like that, but this should get you started.
Maybe I've misread your question, but couldn't you just Split the contents of the Textbox into an array and loop over that using the array index for numbering? Basic example.
精彩评论