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?
CPU Last steigt auf 100% obwohl das GUI noch nicht arbeiten muss.
-
- [ offen ]
-
mm4040 -
14. Dezember 2009 um 20:37 -
Geschlossen -
Erledigt
-
-
wenn du eine schleife am laufen hast, dann steigt die cpu auslastung auf 100 %
-
- Offizieller Beitrag
Ohne Code kann man dir da nicht helfen. Poste mal dein Script.
-
- Offizieller Beitrag
Ohne Code müssen wir raten.
Es wird irgendwo eine Schleife laufen und dort gehört ein Sleep rein: (50) langt. -
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 -
wir lachen doch nich
[autoit]
einfachWhile 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
WEnd
[autoit]
durchWhile 1
[/autoit][autoit][/autoit][autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit]
sleep(50)
WEnd
ersetzen.
Dann sollte es klappenGreez
-
- Offizieller Beitrag
Nein, dadran kann es nicht liegen. GuiGetMsg() bewirkt defacto auch ein Sleep().
Ich schau es mal genauer an. -
Einfach statt
[autoit]While 1
[/autoit]das hier
[autoit]While 1 * sleep(20)
[/autoit]ZitatNein, dadran kann es nicht liegen. GuiGetMsg() bewirkt defacto auch ein Sleep().
Doch, daran liegt es aber. Da geb ich dir Brief und Siegel drauf! -
- Offizieller Beitrag
Dir fehlt eine Arbeitsschleife:
[autoit]While 1
[/autoit]
Sleep(100)
WEnd
Da du im OnEventMode arbeitest, brauchst du diese Schleife um das Skript 'am Laufen' zu halten.
Aber in der Func _GUIEvents verwendest du GuiGetMsg!! Beides gleichzeitig geht nicht. Und innerhalb einer Funktion GuiGetMsg anzuwenden ist nur in seltenen Fällen sinnvoll. -
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 ?? -
Er hat kein GuiGetMsg() in einer Funktion.
Davon abgesehen ist das Problem wirklich der OnEventMode.
Sobald Opt("GUIOnEventMode", 1) gesetzt ist wird GUIGetMsg() zum Ressourcenfresser.
Hat auch zusammen in einem Skript nichts zu suchen.
Entweder - Oder.Ich empfehle dir daher nochmal die >>Hilfe zur Erklärung der beiden GUI-Konzepte<< durchzulesen.
-
- Offizieller Beitrag
Er hat kein GuiGetMsg() in einer Funktion.
Stimmt, leider unformatiert, da hab ich das EndFunc übersehen. -
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. -
- Offizieller Beitrag
Zeig nochmal dein Aktuelles Script. Benutze aber bitte einen Spoiler und die Autoit Quellcode Tags.
-
Bug Fix
gibt es ein Grenze von Einträge im Array die man nicht überschreiten sollte ?
Wieviele Datensätze kann man einlesen und verarbeiten. ? -
ich hoffe ich hab es jetzt richtig gemacht
Spoiler anzeigen
[autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#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)
[/autoit] [autoit][/autoit] [autoit]
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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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, "")
[/autoit] [autoit][/autoit] [autoit]
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")
[/autoit] [autoit][/autoit] [autoit]
$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)
[/autoit] [autoit][/autoit] [autoit]
;~ 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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#EndRegion ### END Koda GUI section ###
[/autoit] [autoit][/autoit] [autoit]
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
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEnd
; - Datei einlesen;- Auswertung Beginn
[/autoit] [autoit][/autoit] [autoit]
Func _checkFile()Dim $c_LCNoread = 0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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)
[/autoit] [autoit][/autoit] [autoit]
_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])
[/autoit] [autoit][/autoit] [autoit]
;
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
[/autoit] [autoit][/autoit] [autoit]
;- 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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;--- Runden zählenNext; Schleifen ende nächster Datensatz
[/autoit] [autoit][/autoit] [autoit]
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
[/autoit] [autoit][/autoit] [autoit]Func _openLog()
[/autoit] [autoit][/autoit] [autoit][/autoit]
;~ MsgBox("","",$logfile)
Run("uedit32.exe" & " /c " & $logfile, "", @SW_MAXIMIZE)
EndFunc ;==>_openLog -
- Offizieller Beitrag
Probier es mal so:
Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
#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)
[/autoit] [autoit][/autoit] [autoit]
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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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, "")
[/autoit] [autoit][/autoit] [autoit]
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")
[/autoit] [autoit][/autoit] [autoit]
$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)
[/autoit] [autoit][/autoit] [autoit]
;~ 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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]#EndRegion ### END Koda GUI section ###
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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
Sleep(50)
WEnd
; - Datei einlesen;- Auswertung Beginn
[/autoit] [autoit][/autoit] [autoit]
Func _checkFile()Dim $c_LCNoread = 0
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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)
[/autoit] [autoit][/autoit] [autoit]
_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])
[/autoit] [autoit][/autoit] [autoit]
;
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
[/autoit] [autoit][/autoit] [autoit]
;- 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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
;--- Runden zählenNext; Schleifen ende nächster Datensatz
[/autoit] [autoit][/autoit] [autoit]
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
[/autoit] [autoit][/autoit] [autoit]Func _openLog()
[/autoit]
;~ MsgBox("","",$logfile)
Run("uedit32.exe" & " /c " & $logfile, "", @SW_MAXIMIZE)
EndFunc ;==>_openLog -
- Offizieller Beitrag
Maximum:
- 64 Dimensionen
- 16 777 216 Einträge gesamt -
ich habe es jetzt mal nur mit 2000 Datensätzen durchlaufen lassen . Es hat sich zeitlich nichts geändert und die CPU Last ist weiterhin auf 100 %.
-
Danke Bug Fix
die 64 Dimensionen sollen reichen
-