Dateien laden, Dateigröße
17.10.2008 13:06:48
carsten
ich hab ein programm geschrieben, welches eine textdatei mit messwerten lädt, und dann sowohl zeilen als auch spalten zählt(anhand der zeichen ascii 9 u 10).
funktioniert bei ner normalen textgröße auch wunderbar
nun habe ich jedoch textdateien mit einer größe von 100 MB. da versagt das programm.
meine frage: gibt es eine grenze bei der größe von dateien, die man laden kann?
oder hat jemand vielleicht ne andere idee, wo das problem liegen könnte?
ist die anweisung zum laden der datei falsch gewählt?
hier mein code:
'variablen für das reine spalten und zeilenzählen
Public ReadFile As String
Public zeichen 'zeichen im string beim zählen der zeilen und spalten
Public Länge 'ist die Länge des Gesamtstrings
Public Anzahl 'ist die Anzahl der Zeilen
Public Spalten 'ist die Anzahl der Spalten
Public Ascii 'ist der Ascii-Wert eines Zeichens
Public merkez 'ist die Stelle, an der die erste überzählige Zeile erreicht wird
Public kopfzeile As String 'ist der Kopfzeilenstring
Public daten As String
Sub Zeichenzählen()
Dim frage 'ist der Wert der Ja/Nein Frage
Anzahl = 0
Spalten = 1
ReadFile = Application.GetOpenFilename("Dateityp (*.txt; *.log; *.dat; *.asc; *.doc; *.rtf),")
If ReadFile = "Falsch" Then Exit Sub
'Die Zeilen und Spalten des Strings werden erfasst, gezählt
'und für weitere Operationen wichtige Stellen werden gespeichert
Open ReadFile For Random As #1
Do While Not EOF(1)
Länge = Len(daten)
For x = 1 To Länge
zeichen = Mid(daten, x, 1) 'der ascii wert eines jeden zeichen wird ausgewerten
Ascii = Asc(zeichen)
If Ascii = 10 Then 'wenn der ascii=10, dann newLine/ende einer zeile
Anzahl = Anzahl + 1
End If
If Ascii = 9 And Anzahl = 0 Then 'wenn ascii=9, dann tab/neue spalte ->spalten werden nur _
_
anhand der ersten zeile gezählt
Spalten = Spalten + 1
End If
If Anzahl = 65536 Then 'stelle im datenstring, an der mehr als excelzeilen erreicht _
werden
merkez = x
End If
If Anzahl = 0 Then 'kopfzeilenstring für die verarbeitung hinsichtlich der zeilen _
_
wird gespeichert
kopfzeile = Mid(daten, 1, x)
End If
Next x
Loop
MsgBox "Zeilenzahl ist " & Anzahl & " Spaltenzahl ist " & Spalten
UserForm1.Show 'der user entscheidet, ob er die spaltenformatierungsfkt. oder die Zeilen _
formatierungsfkt. nutzen möchte
End Sub