Moin,
bevor das
File Object eingeführt wurde, war
FileAppend die einzige eingebaute Anweisung, mit der man Dateien schreiben konnte. Soweit ich mich erinnern kann, gab es in den seligen XP-Zeiten die heute immer wieder berichteten extremen Laufzeiten nicht. Ich habe selbst regelmäßig ein Programm genutzt, das vorhandene Sourcedateien und Änderungsdateien zusammengemischt und daraus mit
FileAppend eine neue Sourcedatei erstellt hat. Die Sourcen bestanden oft aus mehreren 1000 Zeilen. Verarbeitungszeiten von mehr als 5 Sekunden gab es selbst auf unseren schwachbrüstigen Desktops nicht. Mit den moderneren Windows-Versionen und/oder den moderneren Versionen der AV-Programme scheint sich das verschlechtert zu haben.
Weil jede
FileAppend Anweisung die betroffene Datei öffnet, beschreibt und wieder schließt, wird die Datei aus Sicht des Bertriebssystems und der AV-Programme immer wieder in sehr kurzen Abständen geändert. Auf Systemebene verhindert das zumindest das Dateicaching. Die AV-Programme mögen sich aufgerufen fühlen, die Datei immer wieder aufs Neue auf Virenbefall zu überprüfen. Ich verdächtige da bevorzugt den 'Windows Defender', kann damit aber auch falsch liegen.
Inzwischen geibt es das
File-Objekt. Es wird mit der Funktion
FileOpen() erstellt:
Code: Select all
FileObj := FileOpen(OutFile, "w") ; öffnet die in OutFile übergebene Datei zum (Über-)Schreiben
Deine Schleife zum Füllen der neuen Datei sähe dann so aus:
Code: Select all
Loop, % CSVNEU.MaxIndex()
FileObj.Write(CSVNEU[A_Index]) ; evtl. auch FileObj.WriteLine()
; oder auch
For Each, Line In CSVNEU
FileObj.Write(Line) ; evtl. auch FileObj.WriteLine()
Nach Ende der Schreibaktion sollte die Datei noch geschlossen werden:
Damit werden evtl. noch gecachte Daten auf die Platte geschrieben und die AV-Programme über die Änderung der Datei informiert.
Die Ausführungszeit sollte auch bei größeren Dateien im Rahmen bleiben.