Hallo Zusammen,
ich wollte gerade mal wieder etwas mit AutoIt coden. Konkret geht es darum mehrere ca. 1.1MB grosse RTF Files zu parsen und als CSV zu speichern. Das einlesen der ca. 6000 Zeilen pro File dauert mit Autoit Minuten (nach 6 Minuten hatte ich die Faxen dicke), man kann zusehen wie AutoIt die Zeilen einliest, es funktioniert aber es ist viel zu langsam.
Zu beobachten war auch, dass FileReadLine OHNE expliziete Angabe der linenumber immer nur die erste Zeile einliest
Woran liegt das????
Danke für Eure hilfe. Mit freundlichen Grüßen
Lutz
P.S: Das olle brexx benötigt dafür nur Sekundenbruchteile
P.P.S.: Der unvollständige Code:
Spoiler anzeigen
; pcdmis2csv00.au3.au3
#include-once
#include <\Archiv\Prg\AutoIt\Include\rexx01.au3>
#include <\Archiv\Prg\AutoIt\Include\tools00.au3>
#include <\Archiv\Prg\AutoIt\Include\stack00.au3>
; Grundeinstellungen
HotKeySet("{PAUSE}", "MeinExit")
; Hilfsfunktionen
Func MeinExit()
Exit
EndFunc
; init
$n_s1 = inistack() ; init stack 1
$search = FileFindFirstFile(@WorkingDir&"\*.rtf")
If $search = -1 Then
MsgBox(0, @ScriptName&": Fehler!", "Keine RTF Dateien in >"&@WorkingDir&"< gefunden")
Exit
EndIf
While 1
$dummy = FileFindNextFile($search)
If @error Then ExitLoop
push($n_s1,$dummy)
WEnd
FileClose($search)
send("^n")
[/autoit] [autoit][/autoit] [autoit]while eos($n_s1)
$datei_r = pop($n_s1)
$datei_w = changestr('.rtf',$datei_r,'.csv')
fileopen($datei_r,0) ; Quelle lesend geöffnet
fileopen($datei_w,2) ; Ziel überschreibend geöffnet
tooltip(@ScriptName&"- Datei: "&$datei_r&" wird bearbeitet", )
$n = 0 ; Startzeile Messprogramm
While 1
$n = $n + 1
$zeile = FileReadLine($datei_r,$n)
; tooltip($zeile)
if $zeile = "}}" Then ExitLoop ; Ende des RTF
; if pos('SCN',$zeile) > 0 then
; $rl = length($zeile) - pos('SCN',$zeile) + 1
; $zeile = right($zeile,rl)
; ele = word(zeile,1)
; endif
; MsgBox(0, "Line read:", $n)
Wend
fileclose($datei_r)
fileclose($datei_w)
wend
Edit BugFix: Tags gesetzt