Meine Datei ist zu gross um in meine Variable zu passen

MatMagic

Erfahrenes Mitglied
Hi ersma.....
Mein Problem ist folgendes:
Ich lese eine Datei ein "wertung.htm" aus dem Ordner "output"
mit folgendem Code:

Dim zeile As String
Open "output/wertung.htm" For Input As 4
Do Until EOF(4) = True
Line Input #4, zeile
ausleser = ausleser & zeile
DoEvents
Loop
Close 4

die variable "ausleser" habe ich in einem modul als "string" definiert
diese variable (so habe ich gehofft) sollte nun den Inhalt der eingelesenen Datei aufnehmen damit ich sie systematisch durchsuchen und auswerten kann.

unter anderem mit dieser Routine:

a = Len(ausleser)
b = InStr(ausleser, "%")
c = Mid(ausleser, b, a - b)
treffer = c

Es funktioniert auch alles einwandfrei......bis zu einem bestimmten Punkt
Dann scheinen keine Daten mehr in meiner Variable "ausleser" vorhanden zu sein.

Info:
Größe der Htm-Datei: ca. 1,5 MB

Meine Frage(n)
Wieviel Bytes kann eine Variable aufnehmen? (da ich glaube das es daran liegt)
Wie kann ich trotzdem diese "grosse" Datei in eine Variable einlesen?
Darf ich keine Variable verwenden? Wie dann? (ein textfeld funktioniert auch nicht)
Was mache ich falsch - welcher weg führt mich zum erfolg!? :(

Bitte helft mir
Danke ! :)
 
In einen String passen Zeichenketten in der Länge von 0 bis 2 * 10^9, sollte sich also für dein Vorhaben ausgehen. Der Fehler scheint woanders zu liegen.

Bist Du Dir sicher, dass die komplette Datei eingelesen wird?

Weitere Informationen zu Visual Basic und Datentypen (und deren Längen) findest Du hier .
 
Hallo danke für die schnelle Antwort!

Ich bin mir eigentlich ziemlich sicher das die ganze Datei gelesen wird da der ganze Vorgang 2 Minuten dauert .
Ich habe jetzt nocheinmal eingefügt das man in einem Textfeld sehen kann das jede einzelne Zeile einmal durchläuft (während des einlesens gebe ich die aktuelle Zeile an ein textfeld wo alle durchlaufen)

Dim zeile As String
Open "output/wertung.htm" For Input As 4
Do Until EOF(4) = True
Line Input #4, zeile
txtpruef.text = zeile
ausleser = ausleser & zeile
DoEvents
Loop
Close 4

Aber die Variable "ausleser" an die ich dann die einzelnen Zeilen übergebe nimmt ab einem bestimmten Zeitpunkt keine Daten mehr auf. Dein Link hilft mir leider nicht weiter. Fällt dir oder jemand anderem noch eine Lösung ein ?

:(
 
Ciao,
Also das der String zu klein ist, halte ich für fast unmöglich, denn ich lese ein Textfile ein das ca 66 MByte hat und alles passt in eine Variable.
Schau dir mal dies an, evtl. hilft dir das weiter:
Code:
Dim KNr As Integer
Dim Inhalt As String
Dim Zeile() As String
Dim Datei As String
 
Datei = "C:\Datei.txt"
KNr = FreeFile
Inhalt = Space(FileLen(Datei))

Open Datei For Binary As KNr
Get KNr, , Inhalt
Zeile = Split(Inhalt, vbNewLine)
Close KNr
Nun kannst du einzelne Zeilen ausgeben:
Code:
MsgBox Zeile(1)
oder suchen
Code:
AnzahlX  = IntStr(Zeile, "X")
Hoffe konnte dir weiterhelfen.

Grüsse
 
:-) :) :-)
Vielen Dank !
Es lag nicht daran das die Daten nicht in die Variable passten - sondern das ich versucht habe die Komplette Variable zu durchsuchen. Es war also alles drin nur ich kam nicht ran.
Mit deiner Lösung ist mein Programm jetzt nicht nur funktionstüchtig (wohl das wichtigste) da ich nun Zeilenweise auswerte sondern auch um ein vielfaches schneller ! Das Einlesen geht jetzt in ca. 10 Sekunden statt vorher ca. 2 Minuten und das auswerten rast je nach Abfragemenge in 10 bis 30 Sekunden durch statt vorher 3 bis 5 Minuten (hatte ja teilweise funktioniert - nur das eben 90% der Daten nicht da waren)

Ich bin rundum Glücklich, verneige mich in Ehrfurcht und weiss jetzt wo ich mal nachschauen kann wenn ich wieder ein Problem habe.

Danke an euch beiden für die Hilfe :)
 
Zurück