Генерация нумерованного списка с помощью VB6
Я новичок, использующий VB6, чтобы попытаться создать простую текстовую программу. В основном в своей работе я создаю множество текстовых файлов с заголовками, а затем переменными данными, чтобы не тратить время на ручной ввод документа с каждым заголовком каждый раз, когда я создавал программу VB6, которая автоматически добавляла заголовки, я вводил данные и выводил все это как текстовый файл. Я сделал большую часть этого, но есть одна часть, которую я не могу сделать.
Одна часть текстового файла представляет собой нумерованный список с точкой после него. НАПРИМЕР:
ЗАГОЛОВОК
01. СЫР
02. ШОКОЛАД
03. Хлеб
и так далее.
Список отличается в каждом файле и имеет разную длину, поэтому может быть 4 элемента, может быть 20. В настоящий момент у меня есть простой TextBox, и я каждый раз вручную вводю данные, как указано выше, с цифрами. Я хотел бы, чтобы число, точка и пробел автоматически создавались перед списком. Так что я мог бы просто войти в список как есть
СЫР
ШОКОЛАД
ХЛЕБ
и когда я генерирую текстовый файл, список автоматически нумеруется. Это возможно с 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
3 ответа
Вы можете:
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
Вы, вероятно, захотите сделать что-то вроде этого (вне головы, так что простите за синтаксические ошибки)...
'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
Вы можете получить фантазию и проверить верхние границы, чтобы получить длину и дополнить числа и тому подобное, но это должно помочь вам начать.
Может быть, я неправильно прочитал ваш вопрос, но не могли бы вы просто разделить содержимое текстового поля на массив и зациклить его, используя индекс массива для нумерации? Основной пример.