Генерация нумерованного списка с помощью VB6 - PullRequest
3 голосов
/ 07 июня 2011

Я новичок, использующий 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 ]

5 голосов
/ 07 июня 2011

Вы можете:

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
2 голосов
/ 07 июня 2011

Вы, вероятно, захотите сделать что-то вроде этого (из головы в голову, так что простите за синтаксические ошибки) ...

   '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

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

1 голос
/ 07 июня 2011

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

...