Hallo Steffen,
das ist schon merkwürdig. Mir ist nichts darüber bekannt, dass die Länge einer sequentiellen Datei außer durch die physikalischen Gegenbenheiten beschränkt ist. Allerdings habe ich bisher nicht solch riesige Dateien in VBA bearbeitet.
Ich schlage noch folgende Prüfungen nacheinander vor:
1. Prüfe den Wert von EOF(1) beim Abbruch. Wenn er bereits auf "true" steht, ist die Ausgangsdatei zu prüfen, warum dies vor dem erwarteten Ende passiert. Da keine Fehlermeldung kommt und der PC offenbar weiterarbeitet, ist nicht auszuschließen, dass das Programm denkt, es bereits fertig.
2. Versuche "Append" anstelle von "Output".
3. Versuche die "Write#"-Anweisung anstelle von "Print#".
Falls eine Lösung zum Erfolg führt, teile dies bitte mit.
Falls nicht, nenne die technischen Daten beim Makroabbruch, möglichst auch bei den oben vorgeschlagenen Änderungen:
- Länge der geschrieben Datei in Byte
- Wie viele "temp"s wurden geschrieben? Ist das letzte vollständig?
- Wie viel Platz ist beim Abbruch noch auf der Festplatte?
Holger
Steffen schrieb am 25.10.2007 23:01:16:
Hi Holger,
das Makro stürzt ohne Fehlermeldung ab. An dieser Stelle ist temp lang genug. Liegt es u.U. an der Open for Output Anweisung, denn ohne Schreiben in die zweite Datei läuft das Makro. Kann dies ein VBA Problem sein? Zu große Dateien?
Steffen
Holger schrieb am 25.10.2007 13:58:28:
Hallo Steffen,
in welcher Zeile deines Programmes bricht die Ausführung ab? Welche Fehlermeldung wird erzeugt? Bist du dir sicher, dass die Datei an der Abbruchstelle in Ordnung ist? Wenn z.B. temp dort nur 7 Zeichen lang ist, führt Mid(temp,i,1) mit i=8 zu einem Abbruch. Falls erforderlich, melde dich noch einmal.
Holger
Steffen schrieb am 25.10.2007 00:27:27:
Hallo an die versierte Gemeinde hier.....
Ich versuche eine riesige Textdatei mit ca. 1,7GB (Schachdatenbank)
zeilenweise einzulesen, dort bestimmte Stellen ein Leerzeichen durch ein Komma ersetzen und dann die so editierte Zeile, so wie auch die nicht veränderten Zeilen wieder zeilenweise in eine neue Datei zu speichern. Das ganze funktioniert soweit auch ganz gut, nur hört das Makro nach ca. 1.000.000 Zeilen auf, immer an der gleichen Stelle.
......
Sub Zusammen()
Open "c:\IBASE15.pgn" For Input As #1
Open "c:\ibase15_1.pgn" For Output As #2
Do While Not EOF(1)
Line Input #1, temp
If Left(temp, 7) = "[White " Or Left(temp, 7) = "[Black " Then
a = Len(temp)
For I = 8 To a
If Mid(temp, I, 1) = " " Then
temp = Left(temp, I - 1) & "," & Right(temp, a - I)
GoTo raus
End If
Next I
End If
raus:
Print #2, temp
Loop
Close #1
End Sub
.................
Warum ist dies so????
Grüße Steffen |