ich habe das Script inzwischen wieder abgebrochen, weil es immer noch in einer zähen Art und Weise läuft, also weit über 15 Min.
ich hoffe ich finde noch eine Vorgänger version und kann den unterschied zur jetzigen Version finden.
Beiträge von mm4040
-
-
hoi,
es geht tatsächlich. Jetzt steigt die CPU Last erst beim Starten des Skripts.
Ich wundere mich nur , weil bis vor kurzen das Programm rasend schnell war. naja.....
Jetzt benötigt es für ca 35000 Datensätze auf einmal weit mehr als 5 Min. Obwohl ich nur eine Text datein mit Zeilen zerlege.
Kann es durch irgend ein Update (Windows ... Virenscanner ... ) auf einmal langsamer laufen ?? -
aber nicht lachen ...
Spoiler anzeigen
#include <File.au3>
#include <Array.au3>
#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <ButtonConstants.au3>
#include <GUIConstants.au3>
#include <GuiEdit.au3>
#include <ProgressConstants.au3>
#include <GUIComboBox.au3>
;~ #include <Math.au3>Opt("GUIOnEventMode", 1)
Opt("GUICloseOnESC", 0)
Global $logfile, $c_LCNoread, $c_IDNoread, $c_IFNoread, $aSchalen[1], $aRundenCounter
#Region ### START Koda GUI section ### Form=D:\Software\Autoit\Scripte\Entwicklung\Koda_Form\CodeAnalyse.kxf$Form1_1_1 = GUICreate("CodeAnalyse", 1033, 247, 192, 124)
GUISetFont(8, 400, 0, "Arial")
GUISetBkColor(0x808080)
;~ $progressbar1 = GUICtrlCreateProgress(100,400, 200, 20)
GUICtrlSetColor(-1, 32250); not working with Windows XP Style
GUISetOnEvent($GUI_EVENT_CLOSE, "_GUIEvents")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "_GUIEvents")
GUISetOnEvent($GUI_EVENT_RESTORE, "_GUIEvents")GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 6, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x0000FF)
$Label1 = GUICtrlCreateLabel("Pfad", 16, 32, 26, 18)
;~ $Pfad = GUICtrlCreateInput("", 60, 32, 425, 22)
$Edit1 = GUICtrlCreateEdit("", 800, 32, 200, 200)
;~ $Pfad1 = GUICtrlCreateCombo("", 48, 24, 145, 25)GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 248, 136, 217, 21);System
$Input3 = GUICtrlCreateInput("", 472, 136, 217, 21);Datum
$Input4 = GUICtrlCreateInput("", 24, 200, 217, 21);Leitcode
$Input5 = GUICtrlCreateInput("", 248, 200, 217, 21);Identcode
$Input6 = GUICtrlCreateInput("", 472, 200, 217, 21);Identifire
$Input7 = GUICtrlCreateInput("", 24, 104, 663, 21);Statuszeile
$Input8 = GUICtrlCreateInput("", 24, 168, 217, 21);Anzahl Datensätze
$Input9 = GUICtrlCreateInput("", 24, 136, 217, 21);PZ Name
$Input10 = GUICtrlCreateInput("", 248, 168, 217, 21);Norread
GUICtrlSetColor(-1, 0xFF0000)$btn1 = GUICtrlCreateButton("Datenanalyse...", 520, 32, 100, 40, $BS_ICON)
;~ GUICtrlSetImage(-1, "shell32.dll", 23)
GUICtrlSetOnEvent($btn1, "_checkFile")
$btn2 = GUICtrlCreateButton("Logfile.", 650, 32, 100, 40, $BS_ICON)
;~ GUICtrlSetImage(-1, "shell32.dll", 23)
GUICtrlSetOnEvent($btn2, "_openLog")
;Combobox füllen
$Pfad = GUICtrlCreateCombo("", 48, 24, 245, 25)
$var=_FileListToArray("c:\temp\","*rw.dat",1)
;~ _ArrayDisplay($var)
For $i = 1 To $var[0]
_GUICtrlComboBox_AddString($Pfad, $var[$i])
nextGUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Func _GUIEvents();==> Knöpfe Maximieren Minimieren Ende
Select
Case @GUI_CtrlId = $GUI_EVENT_CLOSE
Exit
Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
Case @GUI_CtrlId = $GUI_EVENT_RESTORE
EndSelect
EndFunc ;==>_GUIEvents
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
WEnd
; - Datei einlesen;- Auswertung Beginn
Func _checkFile()Dim $c_LCNoread = 0
Dim $c_IDNoread = 0
Dim $c_IFNoread = 0
Dim $file = "c:\temp\"&GUICtrlRead($Pfad)
Dim $fileline = _FileCountLines($file)
Dim $aRecords
Dim $c_Leerschale = 0
;-löschen der Feldinhalte
_GUICtrlEdit_SetText($Edit1, "--- Start ---"&@crlf)
_GUICtrlEdit_SetText($Input2, "")
_GUICtrlEdit_SetText($Input3, "")
_GUICtrlEdit_SetText($Input4, "")
_GUICtrlEdit_SetText($Input5, "")
_GUICtrlEdit_SetText($Input6, "")
_GUICtrlEdit_SetText($Input7, "")
_GUICtrlEdit_SetText($Input8, "")
_GUICtrlEdit_SetText($Input9, "")
_GUICtrlEdit_SetText($Input10, "")
;- starte Berechnung
_GUICtrlEdit_InsertText($Input7, "Berechnung läuft ..... ")
_FileReadToArray($file, $aRecords)$fileline = _FileCountLines($file)
_GUICtrlEdit_InsertText($Input9, $aRecords[2])
_GUICtrlEdit_InsertText($Input2, $aRecords[3])
_GUICtrlEdit_InsertText($Input3, StringMid($aRecords[4], 6, 11))
$filename = "PZ" & StringMid($aRecords[2], 7, 3) & "_SYS" & StringMid($aRecords[6], 10, 2) & "_" & StringMid($aRecords[4], 6, 11) & ".log"
$logfile = ("c:\temp\" & $filename)
_FileCreate($logfile)
FileOpen($logfile, 1)
;~ $aRundenCounter[1]=0
;~ for $i = 6 to 500
For $i = 6 To $fileline
$str = StringSplit($aRecords[$i], ";")_ArrayAdd($aSchalen,$str[4])
;
If $str[24] = "" And $str[43] = "" And $str[62] = "" Then
$c_Leerschale = $c_Leerschale + 1
_GUICtrlEdit_InsertText($Edit1, $str[1] & " Index=" & $str[4] & @CRLF)
EndIf
;- Leitcode fehlt
If $str[24] = "" Then
$str[24] = "Code fehlt "
$c_LCNoread = $c_LCNoread + 1EndIf
;- Identcode fehlt
If $str[43] = "" Then
$str[43] = "Code fehlt "
$c_IDNoread = $c_IDNoread + 1
EndIf
;- Identifire fehlt
If $str[62] = "" Then
$str[62] = "Code fehlt"
$c_IFNoread = $c_IFNoread + 1
EndIf
;~ _ArrayAdd($aSchalen,$str[4])
;~
; - Schreiben in LogfileFileWrite($logfile, "Zeit=" & $str[1] & " ;Index=" & $str[4] & ";LC=" & $str[24] &";IC=" & $str[43] & ";Code3=" & $str[62] & @CRLF)
;--- Runden zählenNext; Schleifen ende nächster Datensatz
FileClose($logfile)
$ReadGesamt =$fileline-6
_GUICtrlEdit_InsertText($Input8, "Anzahl Datensätze = " & $fileline-6)
_GUICtrlEdit_InsertText($Input4, "Anzahl ID-Code fehlt = " & $c_IDNoread& " % "&StringLeft(($c_IDNoread/$ReadGesamt)*100,5))
_GUICtrlEdit_InsertText($Input5, "Anzahl LC-Code fehlt = " & $c_LCNoread& " % "&StringLeft(($c_LCNoread/$ReadGesamt)*100,5))
_GUICtrlEdit_InsertText($Input6, "Anzahl IF-Code fehlt = " & $c_IFNoread& " % "&StringLeft(($c_IFNoread/$ReadGesamt)*100,5))
_GUICtrlEdit_InsertText($Input10, "Noread = " & $c_Leerschale& " % "&StringLeft(($c_Leerschale/$ReadGesamt)*100,5))
_GUICtrlEdit_SetText($Input7, " - Fertig - " & "Logfile unter -> " & $logfile)EndFunc ;==>_checkFile
Func _openLog()
;~ MsgBox("","",$logfile)
Run("uedit32.exe" & " /c " & $logfile, "", @SW_MAXIMIZE)
EndFunc ;==>_openLog -
Bin ein Neuling,
aber habe das Problem, wenn ich mein GUI starte steigt die CPU Last gleich auf 100 % obwohl das GUI noch nichts abarbeitet bzw. einliest. Woran kann das liegen? -
Hab mal ne Frage,
ich möchte ein Logfile welches ich bearbeitet habe in einem Ausgabefenster ausgeben.
Dazu habe ich das Control " Edit" geählt was ja auch Bildlaufleisten besitzt.
Allerdings werden mir dort nur 356 Zeilen ausgegeben. Ich habe aber wesentlich mehr Zeilen . Gibt es noch eine Andere Möglichkeit außer in ein neues File zu schreiben ?Bestimmt stell ich mich wieder zu dumm an.
Hat jemand eine IDEE ?Habe noch was festgestellt. Wenn ich mit der Maus darin rumscroll werden weitere zeilen angezeigt. Allerdings ist das sehr unzufriedenstellend.
-
Hallo Zusammen,
ich war gerade ein wenig überfordert mit soviel Antworten hatte ich nicht gerade gerechnet.
Nach dem ich alle ausprobiert habe, konnte ich nur eine Richtige Lösung finden.
Mein Dank gilt allen und besonders dem "Bug Fixer".
Hier werden alle Inhalte der Dateien wirklich in nur eine Datei geschriebenProbelm gelöst. Der Sonntag ist gerettet.
Gruss mm4040 -
ja genau,
so wie unter Dos -> da gibt es den Befehl copy *.* c:\Logfile.log
So was simples muss es doch auch geben ?
Das Logfile will später nach Meldungen durchsuchen, und da ich nicht hundertes Files einzeln aufmachen möchte, copier ich den Inhalt aller 100 Datein einfach ein eine Datei -
hm,
ich glaube wir haben aneinander vorbei geredet.
Es sollen alle Dateine(z.B txt oder log Dateien) in ein gesamtes Logfile(nicht Verzeichnis) copiert werden. Aus 50 Dateine wird dann nur noch eine Datei.
Zu mindest unter Dos. -
Hallo ich habe da ein Problem
ich traue es mich ja fast nicht zu fragen, aber .... ich hab schon gesucht und nichts gefunden.
unter Dos gibt es den Befehl copy *.* c:\Logfile.log
d.h alle Dateien im aktuellen verzeichznis werden in ein Logfile kopiert.Mit dem Befehl FileCopy("c:\Log\*.*","c:\log\logfile.log",1) wird nur die letzte Datei im Verzeichnis in das Logfile kopiert.
Ist das ein BUG ? Oder stelle ich mich zublöd an. Gibt es eine einfache Lösung für das Problem, ohne ein cmd Fenster zu öffnen ?
Gruß mm4040