| 

.NET C# Java Javascript Exception

1
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

Danke für euere Hilfe.
13.01.2010
spicejam 853 2 6
Wieviel MB ist die Datei denn groß?
Frucht 13.01.2010
2,5 MB hast du eine Idee?
spicejam 13.01.2010
2 Antworten
0
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.
14.01.2010
GENiALi 2,5k 1 2 8
PS: Beitrag editieren klappt nicht.
GENiALi 14.01.2010
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"?
spicejam 14.01.2010
Du liest eine Zeile ein ohne zu prüfen ob du überhaupt was zum Removen hast.
Do While sr.Peek >= 0
strString = sr.ReadLine.Remove(0, 3)

Was wenn ReadLine.Length = 0 ist?

Ich hoffe ich lese VB richtig. :-)
GENiALi 14.01.2010
ö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.
spicejam 14.01.2010
1
Aber interessant wäre die Exception schon noch. Würde mich interessieren wie so der obige Code nicht laufen soll.
GENiALi 14.01.2010
0
@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
14.01.2010
Blue 321 1 5
http://www.speedyshare.com/files/20328033/test.txt

Bitteschön. Datei ist natürlich nur copy&paste eines Fakeelements. Datenschutz. Zum testen allerdings perfekt.
spicejam 14.01.2010

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH