Hi,
ich möchte eine grosse .csv - Datei (ca. 100 mb+) in VB6 einlesen.
Mit der hier im Programm üblichen Methode (strInhalt as string)
knallt es bei
strInhalt = Space$(LOF(iFile))
mit der Fehlermeldung "Nicht genügend Zwischenspeicher..."
Ich habe hierzu schon etwas gelesen und die (eigentlich c-Funktionen ? )
Private Declare Function GlobalAlloc Lib "Kernel32.dll" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "Kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "Kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Function GlobalFree Lib "Kernel32.dll" (ByVal hMem As Long) As Long
gefunden. Damit komme ich aber derzeit nicht richtig klar.
Hierzu bräuchte ich bitte einen Tipp, ich möchte den Inhalt der Datei per
in ein Array schreiben.
Wie mache ich das mit den global... Funktionen oder gIbt es hierzu eine bessere Lösung ?
Vielen Dank vorab für Eure Hilfe,
MfG...Mabbi
Nachtrag:
Das Thema hat sich gerade schon erledigt, ich lese die Datei einfach zeilenweise ein und gut ist.
Dauert zwar länger so wie es aussieht. Funktioniert aber.
Für alle mit demselben Problem:
Wenn es eine .csv Datei ist mit VBCRLF als Zeilentrenner: (strsplit ist ein String-Array)
M
ich möchte eine grosse .csv - Datei (ca. 100 mb+) in VB6 einlesen.
Mit der hier im Programm üblichen Methode (strInhalt as string)
Visual Basic-Quellcode
- If FSO.FileExists(DatenDIR$ & "\test.csv") Then
- sFilename = DatenDIR$ & "\tests.csv"
- ' Prüfen, ob Datei existiert
- If Dir$(sFilename, vbNormal) <> "" Then
- ' Datei im Binärmodus öffnen
- iFile = FreeFile: Open sFilename For Binary As #iFile
- ' Größe ermitteln und Variable entsprechend
- ' mit Leerzeichen füllen
- strInhalt = Space$(LOF(iFile))
- ' Gesamten Inhalt in einem "Rutsch" einlesen
- Get #iFile, , strInhalt
- ' Datei schliessen
- Close #iFile
- End If
knallt es bei
strInhalt = Space$(LOF(iFile))
mit der Fehlermeldung "Nicht genügend Zwischenspeicher..."
Ich habe hierzu schon etwas gelesen und die (eigentlich c-Funktionen ? )
Private Declare Function GlobalAlloc Lib "Kernel32.dll" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "Kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "Kernel32.dll" (ByVal hMem As Long) As Long
Private Declare Function GlobalFree Lib "Kernel32.dll" (ByVal hMem As Long) As Long
gefunden. Damit komme ich aber derzeit nicht richtig klar.
Hierzu bräuchte ich bitte einen Tipp, ich möchte den Inhalt der Datei per
in ein Array schreiben.
Wie mache ich das mit den global... Funktionen oder gIbt es hierzu eine bessere Lösung ?
Vielen Dank vorab für Eure Hilfe,
MfG...Mabbi
Nachtrag:
Das Thema hat sich gerade schon erledigt, ich lese die Datei einfach zeilenweise ein und gut ist.
Dauert zwar länger so wie es aussieht. Funktioniert aber.
Für alle mit demselben Problem:
Wenn es eine .csv Datei ist mit VBCRLF als Zeilentrenner: (strsplit ist ein String-Array)
M
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Mabbi“ ()