Hur gör jag för att lägga in all text från en txt-fil i en sträng i VB? // Starta ett nytt projekt, lägg till två labels. Klistra sedan in denna kod: Varför metod 1 är så mycket snabbare beror på stränghanteringen,Text från txt-fil
// CarlSv: Text från txt-fil
Dim fNr As Integer
Dim inRad As String
Dim txt As String
fNr = FreeFile()
Open "path/dinfil.txt" For Input As #fNr
While Not EOF(fNr)
Line Input #fNr, inRad
txt = txt & inRad
Wend
Close #fNr
//peterhSv: Text från txt-fil
Option Explicit
Private Sub Form_Load()
Dim sFile As String
sFile$ = "c:\test.txt"
Label1.Caption = "Binärt: " & CStr(Method1(sFile$)) & " s"
Label2.Caption = "Rad för rad: " & CStr(Method2(sFile$)) & " s"
End Sub
Private Function Method1(ByVal sFile As String) As Single
Dim s As Single
s = Timer
Dim i As Integer
Dim txt As String
i = FreeFile
txt = Space$(FileLen(sFile$))
Open sFile$ For Binary Access Read As #i
Get #i, , txt$
Close #i
Method1 = Timer - s
End Function
Private Function Method2(ByVal sFile As String) As Single
Dim s As Single
s = Timer
Dim fNr As Integer
Dim inRad As String
Dim txt As String
fNr = FreeFile()
Open sFile$ For Input As #fNr
While Not EOF(fNr)
Line Input #fNr, inRad
txt = txt & inRad
Wend
Close #fNr
Method2 = Timer - s
End Function
Ändra sFile i Command1_Click(), kompilera och kör. Du kommer att märka en enorm skillnad i hastighet mellan dessa båda metoder. Ju större filen är, desto mer kommer du att märka skillnad. I mitt fall med en filstorlek på 276 kb, datorn en PIII 800 MHz, fick jag med metod 1: 0,015 s och med metod 2: 64,5 s.Sv: Text från txt-fil
(sträng = sträng & nysträng) den är mycket långsam, VB allokerar nytt minne till variabeln för varje gång man lägger in mer text i strängen.