2011-06-07 84 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 

你可以看中,並檢查上界獲得的長度和墊數字和類似的東西,但這應該讓你開始。