Генерация нумерованного списка с помощью 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

Вы можете получить фантазию и проверить верхние границы, чтобы получить длину и дополнить числа и тому подобное, но это должно помочь вам начать.

Может быть, я неправильно прочитал ваш вопрос, но не могли бы вы просто разделить содержимое текстового поля на массив и зациклить его, используя индекс массива для нумерации? Основной пример.

Другие вопросы по тегам