Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Array "Nicht genügend Speicher"

Array "Nicht genügend Speicher"
Swen
Hallo @ all,
ich arbeite gerade mit Array zum erstenmal, ich habe eine txt datei die mehr als 300.000 Zeilen (bei 70 Spalten) hat und wenn ich versuche diese Datein in ein Array zuladen gibt es immer Probleme da er Sagt das er nicht genügen Speicher hat...
Wie könnte ich die Datei Spliten do das er immer die 50.000 nacheinander nimmt
Gruß
Swen

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Array "Nicht genügend Speicher"
08.12.2010 20:00:01
Christian
Hallo Swen,
ich geh mal davon aus, dass du das Text file auf einen Schlag in einen String einliest und diesen String anschließend am Zeilenumbruch splittest. Anschließend wirst du das Array durchlaufen und hier entsprechende Operationen durchführen. Das ist schnell. braucht aber viel Speicher.
Ein anderer Weg ist, das Text File zeilenweise einzulesen und hier direkt die entsprechenden Operationen durchzuführen. Das dauert ggf. geringfügig länger, braucht aber weniger Speicher.
Gruß
Christian
AW: Array "Nicht genügend Speicher"
08.12.2010 20:15:06
Tino
Hallo,
lese doch die Textdatei Zeilenweise ein und verarbeite diese entsprechend.
Hier mal eine Version die die Zeilen 1 bis 50000, danach 50001 bis 100000 usw. in ein Array liest.
Diese Steps müsstest Du dann einzeln verarbeiten, eventuell in einer separaten Sub an die Du dieses gefüllte Array übergibst.
Sub Lese_TxT()
Dim TxTArray()
Dim sLine$, sFilename$
Dim nCount&, nCountLine&
Dim F%
Dim booEof As Boolean

Const AnzahlStep& = 50000

sFilename = Application.GetOpenFilename("Text Files (*.txt), *.txt")

' Datei zum Lesen öffnen 
F = FreeFile
Open sFilename For Input As #F


Redim Preserve TxTArray(AnzahlStep - 1)

booEof = Not EOF(F)

While booEof
  
  nCountLine& = nCountLine& + 1 'Zähler Zeile 
  Line Input #F, sLine 'Zeile lesen 
  TxTArray(nCount) = sLine 'Zeile in Array 
  nCount = nCount + 1 'Zähler für Array 
  
  booEof = Not EOF(F) 'nächste Zeile 
  
  If (nCountLine Mod AnzahlStep) = 0 Or Not booEof Then
    Redim Preserve TxTArray(nCount - 1)
            
            'hier Array verarbeiten 
            '... 
            '... 
    
    Erase TxTArray 'Array leeren 
    Redim Preserve TxTArray(AnzahlStep - 1) 'neu Dimensionieren 
    nCount = 0
  End If
  
Wend


Close #F


End Sub
Gruß Tino
Anzeige
Text Datei einlesen
08.12.2010 21:06:48
Christian
Hallo Tino,
hier liest du die Zeilen ja auch einzeln ein und schreibst diese in ein Array um anschließend das Array zu durchlaufen um dessen Einträge zu verarbeiten.
Wenn du die Zeile einzeln einlist, kannst du diese ja direkt verarbeiten ohne zwischen geschaltetes Array.
Bsp:
Option Explicit
Sub ReadTxtFile_01()
'Text File komplett einlesen
Dim strSrcFile$, strTxt$
Dim intFile%, i&
Dim vntTxt
strSrcFile = "c:\test.log"
intFile = FreeFile
Open sSrcFile For Binary Access Read As #intFile
i = LOF(intFile)
strTxt = String(i, 0)
Get #intFile, , strTxt
Close #intFile
vntTxt = Split(strTxt, vbCrLf)
strTxt = ""
For i = 0 To UBound(vntTxt)
'... do what you want with 'vntTxt(i)'
Next
Erase vntTxt
End Sub
Sub ReadTxtFile_02()
'Text File zeilenweise einlesen
Dim strSrcFile$, strLine$
Dim intFile%
strSrcFile = "c:\test.log"
intFile = FreeFile
Open strSrcFile For Input As #intFile
Do While Not EOF(intFile)
Line Input #intFile, strLine
'...do what you want with 'strLine'
Loop
Close #intFile
End Sub

Gruß
Christian
Anzeige
woher soll ich das wissen wie Peter es braucht.
09.12.2010 16:37:36
Tino
Hallo,
ich weiß ja nicht wie er evtl. die Daten zuvor noch aufbereiten muss.
Eine Aufbereitung ist auf alle Fälle nötig, weil 300000 Zeilen nicht in xl2003 reingehen.
Vielleicht ist diese Aufbereitung in einem Array besser o. schneller,
daher habe ich mich an die Aufgabe gehalten.
Gruß Tino

51 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige