Hi Leute, ich will eine große Textdatei mit 170.000 Zeilen verarbeiten. Jedoch stürzt meine Anwendung beim lesen/ verarbeiten ab. Ich hab mit der Größe einer Datei noch nie was zu tun gehabt. Hier mal ein Auszug, vllt. kann mir jemand einen Tipp geben.
Private Sub openfile() Dim ofd As New OpenFileDialog With ofd If .ShowDialog = Windows.Forms.DialogResult.OK Then objText.Clear() readFile(.FileName) End If End With End Sub
Private Sub readFile(ByVal path As String) Dim sr As New StreamReader(path) Dim strString, feld, inhalt As String Do While sr.Peek >= 0 strString = sr.ReadLine.Remove(0, 3) If strString.Length > 4 Then feld = "<" & strString.Remove(4) & ">" inhalt = strString.Remove(0, 4) objText.Text += feld & inhalt & feld & vbCrLf Else feld = "<" & strString & ">" objText.Text += feld & "-" & feld & vbCrLf End If Loop sr.Dispose() sr.Close() End Sub
2.5 MB ist nicht gross. Habe schon wesentlich grössere Dateien geladen. Hast du noch eine Exception? VB ist zwar nicht mein Ding, aber Exceptions kennt es auch. Ich denke da vielleicht an ein Index beim Remove ausserhalb eines Ranges ode so.
Also ich hab es geschafft, die Datei, mithilfe eines Backgroundworkers und eines Stringbuilders alles einzulesen. Trotzdem wäre ich an evtl. anderen Lösungsmöglichkeiten interessiert. Was genau meinst du mit "Index beim Remove ausserhalb eines Ranges"?
öhm, ne jede Zeile(zumindest in meiner Datei) hat mindestens 7 stellen. Die ersten 3 sind für mich überflüssig(also remove). Die nächsten 4 sind eine Art Felbezeichnung. Die Nachfolgenden sind der Inhalt der einzelnen Felder. Also mach ich z. B. aus: 011800024 -> <8000>24<8000> Jetzt hab ich das ganze mit einem StringBuilder und einem Backgroundworker gelöst.
@Spacejam: Kannst du mal bitte eine exemplarische Datei posten... dann könnte man noch bissl experimentieren und nachvollziehen warum der Code oben nicht geht. danke