Ups wollte eigentlich nur editieren x'D
Beiträge von Yaerox
-
-
Ohh mein Gott, war gestern schon relativ müde und seh jetzt auch was ich da für n Mist geschrieben habe

Naja habe es mal ein wenig bearbeitet, funktioniert nun.
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
Local $sString = "M.í/k\é-P_ât,r'íck,Güntèr"
Local $aChars[43][2] = [['Ä','Ae'], _
['Ö','Oe'], _
['Ü','Ue'], _
['ä','ae'], _
['ö','oe'], _
['ü','ue'], _
['Â','A'], _
['À','A'], _
['Á','A'], _
['â','a'], _
['á','a'], _
['à','a'], _
['Ê','E'], _
['È','E'], _
['É','E'], _
['ê','e'], _
['é','e'], _
['è','e'], _
['Î','I'], _
['Ì','I'], _
['Í','I'], _
['î','i'], _
['í','i'], _
['ì','i'], _
['Ô','O'], _
['Ò','O'], _
['Ó','O'], _
['ô','o'], _
['ó','o'], _
['ò','o'], _
['Û','U'], _
['Ù','U'], _
['Ú','U'], _
['û','U'], _
['ú','U'], _
['ù','U'], _
['\_',''], _ ; _
['\\',''], _ ; \
['\/',''], _ ; /
['\.',''], _ ; .
['\-',''], _ ; -
['\,',''], _ ; ,
["\'",'']] ; 'For $i = 0 To UBound($aChars) - 1 Step 1
[/autoit] [autoit][/autoit] [autoit]
If StringRegExp($sString, $aChars[$i][0]) = 1 Then $sString = StringRegExpReplace($sString, $aChars[$i][0], $aChars[$i][1])
NextConsoleWrite($sString & @CR)
[/autoit] -
Heyho,
schreib grad eine Funktion die alle Sonderzeichen und Umlaute in einem String ersetzen soll, leider funktioniert dies aber noch nicht wirklich wie gewünscht. Ich habe wie folgt angefangen:
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Local $sString = "Míke"
[/autoit] [autoit][/autoit] [autoit]
Local $aChars[42][2] = [['Ä','Ae'], _
['Ö','Oe'], _
['Ü','Ue'], _
['ä','ae'], _
['ö','oe'], _
['ü','ue'], _
['Â','A'], _
['À','A'], _
['Á','A'], _
['â','a'], _
['á','a'], _
['à','a'], _
['Ê','E'], _
['È','E'], _
['É','E'], _
['ê','e'], _
['é','e'], _
['è','e'], _
['Î','I'], _
['Ì','I'], _
['Í','I'], _
['î','i'], _
['í','i'], _
['ì','i'], _
['Ô','O'], _
['Ò','O'], _
['Ó','O'], _
['ô','o'], _
['ó','o'], _
['ò','o'], _
['Û','U'], _
['Ù','U'], _
['Ú','U'], _
['û','U'], _
['ú','U'], _
['ù','U'], _
[',',''], _
['.',''], _
['-',''], _
['/',''], _
['\',''], _
['_','']]For $i = 0 To UBound($aChars) - 1 Step 1
[/autoit]
Local $aTest = StringRegExpReplace($sString, $aChars[$i][0], $aChars[$i][1])
Next
ConsoleWrite($sString & @CR)Aber das i mit Sonderzeichen wird leider nicht ausgetauscht. Ich habe mal gehört in C prüft man auf Sonderzeichen durch den Dezimalwert der ASCII-Tabelle. Geht sowas in AutoIt auch? Hat jemand einen Tipp für mich?
Grüße
Edit Oscar: Spoiler-Tags hinzugefügt! -
Ich habe in der FileSave Funktion die ganze Zeit nach solchen banalen dummen Fehlern gesucht, och Gott -.- Das FileClose im FileRead ist die Lösung

Danke
-
Hallo, das folgende Script soll eine Datei nach einer Bestimmten Zeile durchsuchen, und anbieten diese Zeile zu bearbeiten. Dies funktioniert alles soweit, nur soll eine zweite .tmp Datei erstellt werden in der die Änderungen vorgenommen werden, dann die originale Datei gelöscht, und die die .tmp umbenannt werden ohne .tmp.
Die .tmp Datei wird richtig erstellt aber das FileDelete funktioniert nicht. Rückgabewert ist 1 (Erfolgreich), aber die Datei wird erst gelöscht nachdem das Script beendet wird. Ich habe keine Idee wieso.
Grüße
[autoit]#include <GUIConstantsEx.au3>
[/autoit][autoit][/autoit][autoit]
#include <EditConstants.au3>Opt('MustDeclareVars', 1)
[/autoit][autoit][/autoit][autoit]
Opt('GUIOnEventMode', 1)#region $Vars
[/autoit][autoit][/autoit][autoit]
Local $hGUI
Local $hMenu
Local $hMenu_Exit
Local $hMenu_Help
Local $hMenu_About
Local $hButton_PickFile
Local $sInput_PickFile
Local $hButton_SaveFile
Local $sInput_SaveFile
Local $hLabel_Id
Local $sLabel_Id
Local $sInput_Newline
Local $msg
Global $iId = 308
#endregion $Vars$hGUI = GUICreate("EditFile", 335, 220)
[/autoit][autoit][/autoit][autoit]
$hMenu = GUICtrlCreateMenu("File")
$hMenu_Exit = GUICtrlCreateMenuItem("Exit", $hMenu)
$hMenu_Help = GUICtrlCreateMenu("?")
$hMenu_About = GUICtrlCreateMenuItem("About", $hMenu_Help)
$hButton_PickFile = GUICtrlCreateButton("Pick file", 10, 10, 80, 20)
$sInput_PickFile = GUICtrlCreateInput("", 95, 10, 230, 20, $ES_READONLY)
$hButton_SaveFile = GUICtrlCreateButton("Save file", 10, 35, 80, 20)
$hLabel_Id = GUICtrlCreateLabel("Kennziffer:", 10, 60, 60, 20)
$sLabel_Id = GUICtrlCreateLabel($iId, 70, 60, 60, 20)
$sInput_Newline = GUICtrlCreateEdit("", 10, 80, 315, 110)GUISetState() ; will display an dialog box with 2 button
[/autoit][autoit][/autoit][autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit", $hGUI)
GUICtrlSetOnEvent($hButton_PickFile, "_FileRead")
GUICtrlSetOnEvent($hButton_SaveFile, "_FileSave"); Run the GUI until the dialog is closed
[/autoit][autoit][/autoit][autoit]
While 1
Sleep(100)
WEndFunc _FileRead()
[/autoit][autoit][/autoit][autoit]
Local $hPickedFile
Local $hFile
Local $sLine$hPickedFile = FileOpenDialog("", @FavoritesDir & "", "All (*.txt)")
[/autoit][autoit][/autoit][autoit]
GUICtrlSetData($sInput_PickFile, $hPickedFile)
$hFile = FileOpen($hPickedFile)
While 1
$sLine = FileReadLine($hFile)
If @error = -1 Then ExitLoop
If StringLeft($sLine, 3) = $iId Then GUICtrlSetData($sInput_Newline, StringMid($sLine, StringLen($iId)+1, StringLen($sLine)))
WEnd
EndFuncFunc _FileSave()
[/autoit][autoit][/autoit][autoit]
;Original Datei öffnen
Local $hOfile = FileOpen(GUICtrlRead($sInput_PickFile), 0)
If $hOfile = -1 Then
MsgBox(0, "Fehler", "Datei konnte nicht geöffnet werden." & " Bitte überprüfen Sie, ob die Datei bereits genutzt wird.")
Return 0
EndIf;Tmp Datei erstellen/öffnen
[/autoit][autoit][/autoit][autoit]
Local $hTmpfile = FileOpen(GUICtrlRead($sInput_PickFile) & ".tmp", 2)
If $hTmpfile = -1 Then
MsgBox(0, "Fehler", "Temporäre Datei konnte nicht angelegt werden.")
Return 0
EndIfWhile 1
[/autoit][autoit][/autoit][autoit]
Local $sLine = FileReadLine($hOfile)
If @error = -1 Then ExitLoop
If StringLeft($sLine, 3) = $iId Then
FileWriteLine($hTmpfile, $iId & GUICtrlRead($sInput_Newline))
Else
FileWriteLine($hTmpfile, $sLine)
EndIf
WEndFileClose($hOfile)
[/autoit][autoit][/autoit][autoit]
FileClose($hTmpfile)MsgBox(0,"1",FileDelete(GUICtrlRead($sInput_PickFile)))
[/autoit][autoit][/autoit][autoit]
;~ MsgBox(0,"2",FileMove(GUICtrlRead($sInput_PickFile) & ".tmp", GUICtrlRead($sInput_PickFile), 1))
EndFuncFunc _Exit()
[/autoit]
Exit
EndFunc -
Niemand mehr eine Idee?

-
Ui, da muss ich mir erstmal ein Beispiel zu holen und rein lesen ... habe mit dem _WinAPI noch net gearbeitet.
#Edit: Habe folgendes Beispielscript gefunden:
Spoiler anzeigen
[autoit];««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
; _WinAPI_CreateWindowEx.au3
;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Constants.au3>#include <WinAPI.au3>
[/autoit] [autoit][/autoit] [autoit]Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]Global Const $IDC_STATIC = -1
[/autoit] [autoit][/autoit] [autoit]Global Const $IDC_EDIT = 101
[/autoit] [autoit][/autoit] [autoit]Global $hInstance
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Exit (Example())
;««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««Func Example()
[/autoit] [autoit][/autoit] [autoit]Local $hwndMain
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $hwndEdit
Local $hwndStatic
Local $hwndButton$hInstance = _WinAPI_GetModuleHandle(0)
[/autoit] [autoit][/autoit] [autoit]; Das Hauptfenster erzeugen
[/autoit] [autoit][/autoit] [autoit]
$hwndMain = GUICreate( _
"_WinAPI_CreateWindowEx - Demo", _ ; Titel des Fensters
400, 300, -1, -1, _ ; Grösse und Position des Fensters
BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPCHILDREN), _ ; Fensterstile
$WS_EX_WINDOWEDGE, _ ; Erweiterte Fensterstile
0 _ ; Handle des Parent-Fensters
); Eine einfaches Eingabefeld erzeugen
[/autoit] [autoit][/autoit] [autoit]
$hwndEdit = _WinAPI_CreateWindowEx( _
0, _ ; Erweiterte Fensterstile
"EDIT", _ ; Name der Fensterklasse
"ENTER drücken...", _ ; Text/Titel des Fensters
BitOR($WS_TABSTOP, $WS_CHILD, $WS_BORDER, _ ; Fensterstile
$WS_VISIBLE, $ES_LEFT, $ES_NOHIDESEL), _
100, 80, 200, 22, _ ; Position und Grösse des Fensters
$hwndMain, _ ; Handle des Parent-Fensters
$IDC_EDIT, _ ; Identifizierer des (Kind-)Fensters
$hInstance, _ ; Instanzhandle des Moduls
0 _ ; Anwendungsdefinierter Wert
); Eine einfaches Textlabel erzeugen
[/autoit] [autoit][/autoit] [autoit]
$hwndStatic = _WinAPI_CreateWindowEx( _
0, _ ; Erweiterte Fensterstile
"STATIC", _ ; Name der Fensterklasse
"Text", _ ; Text/Titel des Fensters
BitOR($WS_TABSTOP, $WS_CHILD, _ ; Fensterstile
$WS_VISIBLE, $SS_CENTER), _
160, 140, 80, 18, _ ; Position und Grösse des Fensters
$hwndMain, _ ; Handle des Parent-Fensters
$IDC_STATIC, _ ; Identifizierer des (Kind-)Fensters
$hInstance, _ ; Instanzhandle des Moduls
0 _ ; Anwendungsdefinierter Wert
); Eine einfache Schaltfläche erzeugen
[/autoit] [autoit][/autoit] [autoit]
$hwndButton = _WinAPI_CreateWindowEx( _
0, _ ; Erweiterte Fensterstile
"BUTTON", _ ; Name der Fensterklasse
"Text", _ ; Text/Titel des Fensters
BitOR($WS_TABSTOP, $WS_CHILD, _ ; Fensterstile
$WS_VISIBLE, $BS_DEFPUSHBUTTON), _
160, 220, 80, 25, _ ; Position und Grösse des Fensters
$hwndMain, _ ; Handle des Parent-Fensters
$IDOK, _ ; Identifizierer des (Kind-)Fensters
$hInstance, _ ; Instanzhandle des Moduls
0 _ ; Anwendungsdefinierter Wert
); Fensternachrichten registrieren
[/autoit] [autoit][/autoit] [autoit]
GUIRegisterMsg($WM_COMMAND, "MyWM_COMMAND"); Das Hauptfenster anzeigen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_WinAPI_ShowWindow($hwndMain, @SW_SHOW)While (True)
[/autoit] [autoit][/autoit] [autoit]Switch (GUIGetMsg())
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEndEndFunc ;==>Example
[/autoit] [autoit][/autoit] [autoit]Func MyWM_COMMAND($hwnd, $message, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]Local $sMessage
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Switch (_WinAPI_LoWord($wParam))
[/autoit] [autoit][/autoit] [autoit]
Case $IDC_EDIT
; Nachrichten des Eingabefeldes
Switch (_WinAPI_HiWord($wParam))Case $EN_UPDATE
[/autoit] [autoit][/autoit] [autoit]
ContinueCase
Case $EN_CHANGE
ConsoleWrite(_WinAPI_GetWindowText($lParam) & @CRLF)
EndSwitchCase $IDOK
[/autoit] [autoit][/autoit] [autoit]
$sMessage = StringFormat("Die Schaltfläche mit der ID %d wurde gedrückt.", $IDOK)
_WinAPI_MsgBox( _
BitOR($MB_OK, $MB_ICONASTERISK), _
"MyWM_COMMAND", _
$sMessage _
)
EndSwitchReturn $GUI_RUNDEFMSG
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>MyWM_COMMAND
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];«««««««««««««««««««««««««««««««« End of File «««««««««««««««««««««««««««««««««
[/autoit]
Quelle: translation.autoit.de aber immernoch gleiches Problem. -
Habe schon so viel darüber gesucht, aber irgendwie war es immer dass bei einigen nichts ist, bei anderen mit identischem System der Fehler auftritt und keiner weiss woran es liegt. Angeblich gab es da mal damals ein Problem mit AutoIt, habe aber in den Patchnotes bisher nichts finden können...
-
Hallo zusammen,
sagt mal kennt von euch zufällig jemand eine Lösung für folgendes Problem. http://www.autoitscript.com/forum/topic/12…r-edit-control/ ?Meine AutoIt Version: 3.3.8.1
OS: Windows 7 Prof 64 Bit (alle Treiber aktuell)
Problem tritt bei eigenen sowie den Testscripts auf, compiliert und als Script. Bei einem Kollegen funktioniert alles mit gleichem SetUp ohne Probleme.Suche da schon seit einiger Zeit immer mal zwischendurch, bisher mit Google und dem deutschen sowie englischem Forum erfolgslos

Grüße
-
Nachdem ich nun mein Script langsam wieder zusammenflicken wollte, taucht auf einmal ein altes Problem auf
Der Speicher wächst ca. 100-200K pro durchlauf. Damals war es weil ich kein SQL Query Finalize hatte, jetzt bin ich langsam überfragt.Mein Testscript, mit dem ich den Fehler nach der Info aus dem englischen Forum behoben habe, lief 3 Tage am Stück ohne zu steigen und sich aufzuhängen:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Opt("MustDeclareVars", 1)
OnAutoItExitRegister("_exit"); This is a flag to show whether we should check the timer or not
[/autoit] [autoit][/autoit] [autoit]
Global $fCheck_Timer = True, $iBegin
Global $aQueue[1][3]
Global $aTasks[5][2]Global $hGUI = GUICreate("Aufgabenliste", 250, 390)
[/autoit] [autoit][/autoit] [autoit]Global $iCounter_label = 0
[/autoit] [autoit][/autoit] [autoit]
Global $hCounter_label = GUICtrlCreateLabel("0", 50, 72, 200, 20)
Global $hLoadBtn = GUICtrlCreateButton("Load", 140, 40, 100, 30)
Global $hStartBtn = GUICtrlCreateButton("Start", 30, 5, 50, 30)
Global $hStopBtn = GUICtrlCreateButton("Stop", 30, 40, 50, 30)GUISetState(@SW_SHOW, $hGUI)
[/autoit] [autoit][/autoit] [autoit]GUICtrlSetOnEvent($hLoadBtn, "_load")
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent($hStartBtn, "_check")
GUICtrlSetOnEvent($hStopBtn, "_stop_working")
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit", $hGUI); Set teh initial timestamp
[/autoit] [autoit][/autoit] [autoit]
$iBegin = TimerInit()While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _load()
[/autoit] [autoit][/autoit] [autoit]
$aQueue[0][0] = "0"
$aQueue[0][1] = "18/01/2013 08:00:00"
$aQueue[0][2] = "Test"
EndFunc ;==>_loadFunc _check()
[/autoit] [autoit][/autoit] [autoit]
AdlibRegister("_compare_datetimes", 1000)
EndFunc ;==>_checkFunc _compare_datetimes()
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite(@CR & @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC & " - " & $fCheck_Timer & " ==>> ")
; Should we check the timer?
If $fCheck_Timer Then
; Have we waited 2 secs
If TimerDiff($iBegin) > 1000 Then
ConsoleWrite(@MIN&":"&@SEC&":"&@MSEC & " - ")
; Prevent any checking while the function runs
$fCheck_Timer = FalseLocal $aRow, $next_date, $aDate
[/autoit] [autoit][/autoit] [autoit]
If UBound($aQueue) = 0 Then
_stop_working()
Return 0
EndIf
$aRow = StringSplit($aQueue[0][1], " ")
$next_date = $aRow[1]
$aRow = StringSplit($aRow[2], ":")$aDate = StringSplit($next_date, "/")
[/autoit] [autoit][/autoit] [autoit]If $aDate[3] * 365 + $aDate[2] * 30 + $aDate[1] = @YEAR * 365 + @MON * 30 + @MDAY Then
[/autoit] [autoit][/autoit] [autoit]
If $aRow[1] * 3600 + $aRow[2] * 60 = @HOUR * 3600 + @MIN * 60 + @SEC Or $aRow[1] * 3600 + $aRow[2] * 60 < @HOUR * 3600 + @MIN * 60 + @SEC Then
$aRow = 0
$aDate = 0
_start()
EndIf
ElseIf $aDate[3] * 365 + $aDate[2] * 30 + $aDate[1] < @YEAR * 365 + @MON * 30 + @MDAY Then
$aRow = 0
$aDate = 0
_start()
EndIf
$iCounter_label = $iCounter_label + 1
GUICtrlSetData($hCounter_label, $iCounter_label)
$aRow = 0
$next_date = 0
$aDate = 0ConsoleWrite(@MIN&":"&@SEC&":"&@MSEC)
[/autoit] [autoit][/autoit] [autoit]$fCheck_Timer = True
[/autoit] [autoit][/autoit] [autoit]
; Reset the timestamp
$iBegin = Timerinit()
EndIf
EndIf
EndFunc ;==>_compare_datetimesFunc _start()
[/autoit] [autoit][/autoit] [autoit]
Local $sError, $sStatus, $ShellExecute
Local $aBatch[5][5] = [[1, 1, $aQueue[0][1], "Task 1", "C:/Users/mwenzel/Documents/Testszenario/BATCH-Files/Dateienerzeugen/create_txt.bat"], _
[2, 2, $aQueue[0][1], "Task 2", ""], _
[3, 3, $aQueue[0][1], "Task 3", ""], _
[4, 4, $aQueue[0][1], "Task 4", ""], _
[5, 5, $aQueue[0][1], "_create_next_date", ""]]ReDim $aTasks[5][2]
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aBatch) - 1
$aTasks[$i][0] = $aBatch[$i][1] * 10
$aTasks[$i][1] = $aBatch[$i][3]
NextFor $i = 0 To UBound($aBatch) - 1
[/autoit] [autoit][/autoit] [autoit]
$sStatus = " ... started"
If $aBatch[$i][4] = "" Then
$sError = " "
_write_log($sError, $aBatch[$i][4], $sStatus)
$sError = "OK"
$sStatus = " ... finished"
_write_log($sError, $aBatch[$i][4], $sStatus)
Else
$sError = " "
_write_log($sError, $aBatch[$i][4], $sStatus)
;~ ConsoleWrite($aBatch[$i][4] & @CR)
$ShellExecute = RunWait($aBatch[$i][4], "c:", @SW_HIDE)
If $ShellExecute <> 0 Then
$sError = "FEHLER"
$sStatus = " Something went wrong."
Else
$sError = "OK"
$sStatus = " ... finished"
EndIf
_write_log($sError, $aBatch[$i][4], $sStatus)
EndIfIf UBound($aTasks) = 1 Then
[/autoit] [autoit][/autoit] [autoit]
$aTasks[0][0] = ""
$aTasks[0][1] = ""
Else
_ArrayDelete($aTasks, 0)
EndIf
Next
Sleep(1000)If UBound($aQueue) = 1 Then
[/autoit] [autoit][/autoit] [autoit]
$aQueue[0][0] = ""
$aQueue[0][1] = ""
$aQueue[0][2] = ""
Else
_ArrayDelete($aQueue, 0)
EndIf
$sError = 0
$sStatus = 0
$ShellExecute = 0
$aBatch = 0
_load()
EndFunc ;==>_startFunc _stop_working()
[/autoit] [autoit][/autoit] [autoit]
AdlibUnRegister("_compare_datetimes")
Return 0
EndFunc ;==>_stop_workingFunc _exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_exitFunc _write_log($sError, $sCommand, $sStatus)
[/autoit]
Local $hFile
$hFile = FileOpen("log_wBATCHwoSQLwoLV.txt", 1)
FileWriteLine($hFile, "[" & @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & "][" & $sError & "] " & $sCommand & " " & $sStatus)
FileClose($hFile)
EndFunc ;==>_write_logUnd hier meine aktuelle bei der ich lediglich nun SQL hinzugefügt habe (kann euch das leider auf die Schnelle net lauffähig machen, das würde etwas länger dauern, ich versuche das mal so fix wie möglich):
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GuiComboBox.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <SendMessage.au3>
#include <SQLite.au3>
#include <SQLite.dll.au3>
#include <String.au3>
#include <WindowsConstants.au3>
#include <winapiex.au3>
#include <Date.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Opt("MustDeclareVars", 1)
OnAutoItExitRegister("_exit")Local $fl_name = @scriptdir & '\memstats_b7.txt'
[/autoit] [autoit][/autoit] [autoit]Local $CheckingParameters = $CmdLine[0]
[/autoit] [autoit][/autoit] [autoit]
If $CheckingParameters = 0 Then
Global $usedb = IniRead("H:\AutoIt\Automatische Ablaufsteuerung\config.ini", "Datenbank", "pfad", "default")
Global $path = IniRead("H:\AutoIt\Automatische Ablaufsteuerung\config.ini", "SQLite3.exe", "pfad", "default")
Else
Local $param = $CmdLine[1]
Global $usedb = IniRead($param, "Datenbank", "pfad", "default")
Global $path = IniRead($param, "SQLite3.exe", "pfad", "default")
EndIf; This is a flag to show whether we should check the timer or not
[/autoit] [autoit][/autoit] [autoit]
Global $fCheck_Timer = True
Global $iBegin, $fScriptstatus, $Row, $Query
Dim $aQueue[1][4]
;~ Global $fl_name = @scriptdir & '\memstats.txt'_SQLite_Startup()
[/autoit] [autoit][/autoit] [autoit]
Dim $DB = _SQLite_Open($usedb);#GUI 1
[/autoit] [autoit][/autoit] [autoit]
Global $hGUI = GUICreate("GUI", 250, 390)Global $hMenuFile = GUICtrlCreateMenu("File")
[/autoit] [autoit][/autoit] [autoit]
Global $hMenuFileExit = GUICtrlCreateMenuItem("Exit", $hMenuFile)
Global $hMenuHelp = GUICtrlCreateMenu("?")
Global $hMenuHelpHelp = GUICtrlCreateMenuItem("Help", $hMenuHelp)
Global $hMenuHelpInfo = GUICtrlCreateMenuItem("Info", $hMenuHelp)Global $iCounter = 0
[/autoit] [autoit][/autoit] [autoit]
Global $hCounter = GUICtrlCreateLabel("0", 50, 72, 200, 20)Global $gfx = GUICtrlCreateGraphic(5, 10, 18, 18)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetBkColor($gfx, 0xFF0000)
GUICtrlSetColor($gfx, 0)Global $hBtnAdminTool = GUICtrlCreateButton("AdminTool", 160, 5, 80, 30)
[/autoit] [autoit][/autoit] [autoit]
Global $hBtnLoad = GUICtrlCreateButton("Load", 140, 40, 100, 30)
Global $astart_button = GUICtrlCreateButton("Start", 30, 5, 50, 30)
Global $hBtnStart = GUICtrlCreateButton("Stop", 30, 40, 50, 30)GUISetState(@SW_SHOW, $hGUI)
[/autoit] [autoit][/autoit] [autoit];Aufgabenliste
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent($hMenuFileExit, "_exit")
GUICtrlSetOnEvent($hMenuHelpHelp, "hilfe")
GUICtrlSetOnEvent($hMenuHelpInfo, "info")
GUICtrlSetOnEvent($hBtnLoad, "_load")
GUICtrlSetOnEvent($astart_button, "_check")
GUICtrlSetOnEvent($hBtnStart, "_stop")
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit", $hGUI)_logmem("Scriptstart ---------")
[/autoit] [autoit][/autoit] [autoit]
;~ AdlibRegister("_ReduceMemory", 300000)
; Set teh initial timestamp
$iBegin = TimerInit()While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _load()
[/autoit] [autoit][/autoit] [autoit]
_logmem("_load BEGINNING")
Dim $aStr
Dim $a
Local $i_logmem("_load SQL-1")
[/autoit] [autoit][/autoit] [autoit]
_SQLite_Startup()
$DB = _SQLite_Open($usedb)
_logmem("_load SQL-1")_logmem("_load SQL-2")
[/autoit] [autoit][/autoit] [autoit]
$Query = _sqlitequeryceck($DB, "SELECT id, geplante_startzeit, arbeitsplan_id FROM aufgabenliste ORDER BY geplante_startzeit ASC")
While _SQLite_FetchData($Query, $Row) = $SQLITE_OK
ReDim $aQueue[$i + 1][4]
;x = Row # y = Column
$aQueue[$i][0] = $Row[0] ; Column 0 - ID
$a = StringSplit($Row[1], " ")
$aQueue[$i][1] = $a[1] ; Column 1 - Datum
$aQueue[$i][2] = $a[2] ; Column 2 - Uhrzeit
$aQueue[$i][3] = $Row[2] ; Column 3 - Arbeitsplan ID
$i = $i + 1
WEnd
_SQLite_QueryFinalize($Query)
_logmem("_load SQL-2")For $i = 0 To UBound($aQueue) - 1
[/autoit] [autoit][/autoit] [autoit]
$aStr = StringSplit($aQueue[$i][1], "/")
$aQueue[$i][1] = $aStr[3] & $aStr[2] & $aStr[1]
Next
For $i = 0 To UBound($aQueue) - 1
$aQueue[$i][2] = StringMid($aQueue[$i][2], 1, 2) * 60 + StringMid($aQueue[$i][2], 4, 2)
Next_logmem("_load before _Array2DSortFree")
[/autoit] [autoit][/autoit] [autoit]
_Array2DSortFree($aQueue, '1|0')
_logmem("_load after _Array2DSortFree")For $i = 0 To UBound($aQueue) - 1
[/autoit] [autoit][/autoit] [autoit]
$aQueue[$i][1] = StringMid($aQueue[$i][1], 7, 2) & "/" & StringMid($aQueue[$i][1], 5, 2) & "/" & StringMid($aQueue[$i][1], 1, 4)
Next
For $i = 0 To UBound($aQueue) - 1
If Mod($aQueue[$i][2], 60) = 0 Then
If StringLen($aQueue[$i][2] / 60) = 2 Then
$aQueue[$i][2] = ($aQueue[$i][2] / 60) & ":00"
ElseIf StringLen($aQueue[$i][2] / 60) < 2 Then
$aQueue[$i][2] = "0" & ($aQueue[$i][2] / 60) & ":00"
EndIf
Else
If StringLen(Int($aQueue[$i][2] / 60)) = 2 Then
If StringLen($aQueue[$i][2] - (Int($aQueue[$i][2] / 60) * 60)) = 2 Then
$aQueue[$i][2] = Int($aQueue[$i][2] / 60) & ":" & $aQueue[$i][2] - (Int($aQueue[$i][2] / 60) * 60)
ElseIf StringLen($aQueue[$i][2] - (Int($aQueue[$i][2] / 60) * 60)) < 2 Then
$aQueue[$i][2] = Int($aQueue[$i][2] / 60) & ":0" & $aQueue[$i][2] - (Int($aQueue[$i][2] / 60) * 60)
EndIf
ElseIf StringLen(Int($aQueue[$i][2] / 60)) < 2 Then
If StringLen($aQueue[$i][2] - (Int($aQueue[$i][2] / 60) * 60)) = 2 Then
$aQueue[$i][2] = "0" & Int($aQueue[$i][2] / 60) & ":" & $aQueue[$i][2] - (Int($aQueue[$i][2] / 60) * 60)
ElseIf StringLen($aQueue[$i][2] - (Int($aQueue[$i][2] / 60) * 60)) < 2 Then
$aQueue[$i][2] = "0" & Int($aQueue[$i][2] / 60) & ":0" & $aQueue[$i][2] - (Int($aQueue[$i][2] / 60) * 60)
EndIf
EndIf
EndIf
Next
For $i = 0 To UBound($aQueue) - 1
$Query = _sqlitequeryceck($DB, "SELECT arbeitsplan_name FROM arbeitsplaene WHERE arbeitsplan_id=" & $aQueue[$i][3])
While _SQLite_FetchData($Query, $Row) = $SQLITE_OK
$aQueue[$i][0] = $aQueue[$i][0]
$aQueue[$i][1] = $aQueue[$i][1] & " " & $aQueue[$i][2]
$aQueue[$i][2] = $Row[0]
WEnd
_SQLite_QueryFinalize($Query)
Next
_SQLite_Close()
_SQLite_Shutdown()
_logmem("_load END")
EndFunc ;==>_loadFunc _Array2DSortFree(ByRef $ARRAY, $sCOL_ASC, $NUM = False)
[/autoit] [autoit][/autoit] [autoit]
_logmem("_Array2DSortFree BEGINNING")
If Not IsArray($ARRAY) Then Return SetError(1, 0, 1)
Local $tableStr = "CREATE TABLE [tblTEST] ("
Local $insertStr = '', $insertBase = "INSERT INTO tblTEST VALUES ("
Local $sortOrder = '', $sortStr = "SELECT * FROM tblTEST ORDER BY "
Local $aResult, $asc, $iRows, $iCol, $hSQL
$sCOL_ASC = StringStripWS($sCOL_ASC,
Local $ub2nd = UBound($ARRAY, 2)
If @error = 2 Then
If (StringLen($sCOL_ASC) > 3) Or (StringLeft($sCOL_ASC, 1) <> '0') Then Return SetError(2, 0, 1)
If StringRight($sCOL_ASC, 1) = 0 Then
_ArraySort($ARRAY)
Else
_ArraySort($ARRAY, 1)
EndIf
Return 0
Else
Local $aOut[UBound($ARRAY)][$ub2nd]
EndIf
If @error > 0 Then Return SetError(3, 0, 1)
$hSQL = _SQLite_Open()
If @error > 0 Then
_SQLite_Close()
_SQLite_Shutdown()
Return SetError(3, 0, 1)
EndIf
For $i = 0 To UBound($ARRAY, 2) - 1
$tableStr &= "'field" & $i & "',"
Next
$tableStr = StringTrimRight($tableStr, 1) & ");"
For $i = 0 To UBound($ARRAY) - 1
$insertStr &= $insertBase
For $k = 0 To UBound($ARRAY, 2) - 1
$insertStr &= "'" & $ARRAY[$i][$k] & "',"
Next
$insertStr = StringTrimRight($insertStr, 1) & ");"
Next
If _SQLite_Exec($hSQL, $tableStr & $insertStr) <> $SQLITE_OK Then
_SQLite_Close()
_SQLite_Shutdown()
Return SetError(3, 0, 1)
EndIf
If StringInStr($sCOL_ASC, ',') Then
Local $aOrder = StringSplit($sCOL_ASC, ',')
For $i = 1 To UBound($aOrder) - 1
If StringInStr($sCOL_ASC, '|') Then
Local $var = StringSplit($aOrder[$i], '|')
$asc = ' ASC'
If $var[2] = 1 Then $asc = ' DESC'
If $NUM Then
$sortOrder &= 'ABS(field' & $var[1] & ')' & $asc & ','
Else
$sortOrder &= 'field' & $var[1] & $asc & ','
EndIf
Else
_SQLite_Close()
_SQLite_Shutdown()
Return SetError(4, 0, 1)
EndIf
Next
$sortOrder = StringTrimRight($sortOrder, 1) & ';'
Else
If (StringLen($sCOL_ASC) > 2) And (StringInStr($sCOL_ASC, '|')) Then
Local $var = StringSplit($sCOL_ASC, '|')
$asc = ' ASC'
If $var[2] = 1 Then $asc = ' DESC'
If $NUM Then
$sortOrder &= 'ABS(field' & $var[1] & ')' & $asc
Else
$sortOrder &= 'field' & $var[1] & $asc
EndIf
Else
_SQLite_Close()
_SQLite_Shutdown()
Return SetError(4, 0, 1)
EndIf
EndIf
If _SQLite_GetTable2d($hSQL, $sortStr & $sortOrder, $aResult, $iRows, $iCol) <> $SQLITE_OK Then
_SQLite_Close()
_SQLite_Shutdown()
Return SetError(3, 0, 1)
EndIf
For $i = 1 To UBound($aResult) - 1
For $j = 0 To UBound($ARRAY, 2) - 1
$ARRAY[$i - 1][$j] = $aResult[$i][$j]
Next
Next
_SQLite_Exec($hSQL, "DROP TABLE tblTEST;")
_SQLite_Close()
_logmem("_Array2DSortFree END")
Return 0
EndFunc ;==>_Array2DSortFreeFunc _check()
[/autoit] [autoit][/autoit] [autoit]
;~ _logmem("_check BEGINNING")
$fScriptstatus = True
GUICtrlSetBkColor($gfx, 0x32CD32)
AdlibRegister("_compate_datetimes", 1000)
;~ _logmem("_check END")
EndFunc ;==>_checkFunc _compate_datetimes()
[/autoit] [autoit][/autoit] [autoit]
;~ _logmem("_compate_datetimes BEGINNING")
Local $aSplit, $sNextplanneddate, $aDateform; Should we check the timer?
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If $fCheck_Timer Then
; Have we waited 1 sec
If TimerDiff($iBegin) > 1000 Then
; Prevent any checking while the function runs
$fCheck_Timer = FalseIf UBound($aQueue) = 0 Then
[/autoit] [autoit][/autoit] [autoit]
_stop()
Return 0
EndIf
$aSplit = StringSplit($aQueue[0][1], " ")
$sNextplanneddate = $aSplit[1]
$aSplit = StringSplit($aSplit[2], ":")$aDateform = StringSplit($sNextplanneddate, "/")
[/autoit] [autoit][/autoit] [autoit]If $aDateform[3] * 365 + $aDateform[2] * 30 + $aDateform[1] = @YEAR * 365 + @MON * 30 + @MDAY Then
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
If $aSplit[1] * 3600 + $aSplit[2] * 60 = @HOUR * 3600 + @MIN * 60 + @SEC Or $aSplit[1] * 3600 + $aSplit[2] * 60 < @HOUR * 3600 + @MIN * 60 + @SEC Then
$aSplit = 0
$aDateform = 0
start_working()
EndIf
ElseIf $aDateform[3] * 365 + $aDateform[2] * 30 + $aDateform[1] < @YEAR * 365 + @MON * 30 + @MDAY Then
$aSplit = 0
$aDateform = 0
start_working()
EndIf
$iCounter = $iCounter + 1
GUICtrlSetData($hCounter, $iCounter)$fCheck_Timer = True
[/autoit] [autoit][/autoit] [autoit]
; Reset the timestamp
$iBegin = Timerinit()
EndIf
EndIf$aSplit = 0
[/autoit] [autoit][/autoit] [autoit]
$sNextplanneddate = 0
$aDateform = 0
;~ _logmem("_compate_datetimes END")
EndFunc ;==>_compate_datetimesFunc start_working()
[/autoit] [autoit][/autoit] [autoit]
_logmem("start_working BEGINNING")
Local $sError, $sStatus, $sNewStartDatetime, $ShellExecute, $aSQL[1][6], $aTasks[1][2], $i_SQLite_Startup()
[/autoit] [autoit][/autoit] [autoit]
$DB = _SQLite_Open($usedb)$Query = _sqlitequeryceck($DB, "SELECT laufende_nr, arbeitspunkt_name FROM arbeitspunkte WHERE arbeitsplan_id=(SELECT arbeitsplan_id FROM aufgabenliste WHERE id=" & $aQueue[0][0] & ") AND status='Aktiv' ORDER BY laufende_nr ASC")
[/autoit] [autoit][/autoit] [autoit]
While _SQLite_FetchData($Query, $Row) = $SQLITE_OK
ReDim $aTasks[$i + 1][2]
$aTasks[$i][0] = $Row[0]
$aTasks[$i][1] = $Row[1]
$i = $i + 1
WEnd
;~ _SQLite_QueryFinalize($Query)$i = 0
[/autoit] [autoit][/autoit] [autoit]
$Query = _sqlitequeryceck($DB, "SELECT a.arbeitsplan_id, ap.arbeitsplan_name, a.geplante_startzeit, app.arbeitspunkt_name, app.befehl, app.parameter FROM aufgabenliste a, arbeitsplaene ap, arbeitspunkte app WHERE a.arbeitsplan_id=(SELECT arbeitsplan_id FROM aufgabenliste WHERE id=" & $aQueue[0][0] & ") AND a.arbeitsplan_id=ap.arbeitsplan_id AND a.arbeitsplan_id=app.arbeitsplan_id AND app.status='Aktiv' ORDER BY app.laufende_nr")
While _SQLite_FetchData($Query, $Row) = $SQLITE_OK
ReDim $aSQL[$i+1][6]
$aSQL[$i][0] = $Row[0]
$aSQL[$i][1] = $Row[1]
$aSQL[$i][2] = $Row[2]
$aSQL[$i][3] = $Row[3]
$aSQL[$i][4] = $Row[4]
$aSQL[$i][5] = $Row[5]
$i = $i + 1
WEnd
;~ _SQLite_QueryFinalize($Query)_SQLite_Exec($DB, "UPDATE aufgabenliste SET startzeit=" & @HOUR & @MIN & @SEC & " WHERE id=" & $aQueue[0][0])
[/autoit] [autoit][/autoit] [autoit]
;~ , arbeitspunkt_id=(SELECT arbeitspunkt_id FROM arbeitspunkte WHERE arbeitsplan_id=(SELECT arbeitsplan_id FROM aufgabenliste WHERE id=" & _GUICtrlListView_GetItemText($a_listview_bot, 0, 0) & ") AND laufende_nr=" & _GUICtrlListView_GetItemText($a_listview_top, 0, 0) & ")
;~ _sqliteerrorcheck(@error)For $i = 0 To UBound($aSQL) - 1
[/autoit] [autoit][/autoit] [autoit]
$sStatus = " ... wird gestartet"
If $aSQL[$i][4] = "" Then
$sError = " "
_schreibe_log($sError, $aSQL[$i][0], $aSQL[$i][1], $aSQL[$i][2], $aSQL[$i][3], $aSQL[$i][4], $aSQL[$i][5], $sStatus)
$sNewStartDatetime = _new_datetime($aSQL[$i][0])
_SQLite_Exec($DB, "UPDATE aufgabenliste set geplante_startzeit='" & $sNewStartDatetime & "' WHERE arbeitsplan_id=" & $aSQL[$i][0])
_sqliteerrorcheck(@error)
$sError = "OK"
$sStatus = " ... ist beendet"
_schreibe_log($sError, $aSQL[$i][0], $aSQL[$i][1], $aSQL[$i][2], $aSQL[$i][3], $aSQL[$i][4], $aSQL[$i][5], $sStatus)
Else
$sError = " "
_schreibe_log($sError, $aSQL[$i][0], $aSQL[$i][1], $aSQL[$i][2], $aSQL[$i][3], $aSQL[$i][4], $aSQL[$i][5], $sStatus)
$aSQL[$i][4] = StringRegExpReplace($aSQL[$i][4], "\\", "/")
$ShellExecute = RunWait($aSQL[$i][4], "c:", @SW_HIDE)
If $ShellExecute <> 0 Then
$sError = "FEHLER"
$sStatus = " Es ist ein Fehler aufgetreten."
Else
$sError = "OK"
$sStatus = " ... ist beendet"
EndIf
_schreibe_log($sError, $aSQL[$i][0], $aSQL[$i][1], $aSQL[$i][2], $aSQL[$i][3], $aSQL[$i][4], $aSQL[$i][5], $sStatus)
EndIf
$aTasks = 0
NextSleep(1000)
[/autoit] [autoit][/autoit] [autoit]
_load()
_SQLite_Close()
_SQLite_Shutdown()_logmem("start_working END")
[/autoit] [autoit][/autoit] [autoit]
EndFunc ;==>start_workingFunc _stop()
[/autoit] [autoit][/autoit] [autoit]
_logmem("_stop BEGINNING")
AdlibUnRegister("_compate_datetimes")
$fScriptstatus = False
GUICtrlSetBkColor($gfx, 0xFF0000) ;~ rot
Return 0
_logmem("_stop END")
EndFunc ;==>_stopFunc _add_date($day_to_add)
[/autoit] [autoit][/autoit] [autoit]
;~ _logmem("_add_date BEGINNING")
Local $iDays_of_month, $mday, $mon, $year
If @MON = 01 Or @MON = 03 Or @MON = 03 Or @MON = 05 Or @MON = 07 Or @MON = 08 Or @MON = 10 Or @MON = 12 Then
$iDays_of_month = 31 ; großer Monat
ElseIf @MON = 04 Or @MON = 06 Or @MON = 09 Or @MON = 11 Then
$iDays_of_month = 30 ; mittlerer Monat
ElseIf @MON = 02 Then
If Mod(@YEAR, 4) = 0 Then
$iDays_of_month = 29 ; Schaltjahr
Else
$iDays_of_month = 28 ; kleiner Monat
EndIf
EndIfIf @MDAY + $day_to_add > $iDays_of_month Then ; Wenn Tage größer als Monat, Monat erhöhen
[/autoit] [autoit][/autoit] [autoit]
If @MON + 1 > 12 Then ; Wenn Monat größer als 12 wird, Jahr erhöhen
$mday = "01"
$mon = "01"
$year = @YEAR + 1
Else
$mday = "01"
$mon = @MON + 1
$year = @YEAR
EndIf
Else
$mday = @MDAY + $day_to_add
$mon = @MON
$year = @YEAR
EndIfIf StringLen($mday) < 2 Then
[/autoit] [autoit][/autoit] [autoit]
$mday = "0" & $mday
EndIf
If StringLen($mon) < 2 Then
$mon = "0" & $mon
EndIf
If StringLen($year) < 2 Then
$year = "0" & $year
EndIf
Return $mday & "/" & $mon & "/" & $year
;~ _logmem("_add_date END")
EndFunc ;==>_add_dateFunc _add_time($sStarttime, $admze) ;~~>> admze = count of minutes !!
[/autoit] [autoit][/autoit] [autoit]
;~ _logmem("_add_time BEGINNING")
Local $aStarttime = StringSplit($sStarttime, ":")
Local $min, $hour, $admze_std, $admze_min
If $admze > 60 Then
$admze_std = Int($admze / 60, 0)
$admze_min = Int(Mod($admze, 60))
If $aStarttime[2] + $admze_min > 60 Then
If $aStarttime[1] + $admze_std + 1 > 24 Then
$min = ($aStarttime[2] + $admze_min) - 60
$hour = 0
Else
$min = ($aStarttime[2] + $admze_min) - 60
$hour = $aStarttime[1] + $admze_std + 1
EndIf
Else
$min = $aStarttime[2] + $admze_min
$hour = $aStarttime[1] + $admze_std
EndIf
Else
If $aStarttime[2] + $admze > 60 Then
If $aStarttime[1] + 1 > 24 Then
$min = ($aStarttime[2] + $admze) - 60
$hour = 0
Else
$min = ($aStarttime[2] + $admze) - 60
$hour = $aStarttime[1] + 1
EndIf
ElseIf $aStarttime[2] + $admze = 60 Then
If $aStarttime[1] + 1 > 24 Then
$min = ($aStarttime[2] + $admze) - 60
$hour = 0
ElseIf $aStarttime[1] + 1 = 24 Then
$min = "00"
$hour = "00"
Else
$min = "00"
$hour = $aStarttime[1] + 1
EndIf
Else
$min = $aStarttime[2] + $admze
$hour = $aStarttime[1]
EndIf
EndIf
If StringLen($min) < 2 Then
$min = "0" & $min
EndIf
If StringLen($hour) < 2 Then
$hour = "0" & $hour
EndIf
$aStarttime = 0
Return $hour & ":" & $min
;~ _logmem("_add_time END")
EndFunc ;==>_add_timeFunc _sort_wday_array($ARRAY)
[/autoit] [autoit][/autoit] [autoit]
;~ _logmem("_sort_wday_array BEGINNING")
If $ARRAY[1] = @WDAY Then
Return $ARRAY
Else
For $i = 1 To $ARRAY[0]
If $ARRAY[$i] > @WDAY Then
$ARRAY = _sort_wday_array_increase($ARRAY)
Return $ARRAY
EndIf
Next
$ARRAY = _sort_wday_array_decrease($ARRAY)
Return $ARRAY
EndIf
;~ _logmem("_sort_wday_array END")
EndFunc ;==>_sort_wday_arrayFunc _sort_wday_array_increase($ARRAY)
[/autoit] [autoit][/autoit] [autoit]
;~ _logmem("_sort_wday_array_increase BEGINNING")
Local $i
_ArrayAdd($ARRAY, "")
If $ARRAY[1] > @WDAY Then
Else
Do
$ARRAY[$ARRAY[0] + 1] = $ARRAY[1]
$i = 1
Do
$ARRAY[$i] = $ARRAY[$i + 1]
$i = $i + 1
Until $i = $ARRAY[0] + 1
Until $ARRAY[1] = @WDAY Or $ARRAY[1] > @WDAY
EndIf
_ArrayDelete($ARRAY, UBound($ARRAY))
Return $ARRAY
;~ _logmem("_sort_wday_array_increase END")
EndFunc ;==>_sort_wday_array_increaseFunc _sort_wday_array_decrease($ARRAY)
[/autoit] [autoit][/autoit] [autoit]
;~ _logmem("_sort_wday_array_decrease BEGINNING")
Local $i
_ArrayAdd($ARRAY, "")
Do
$ARRAY[$ARRAY[0] + 1] = $ARRAY[1]
$i = 1
Do
$ARRAY[$i] = $ARRAY[$i + 1]
$i = $i + 1
Until $i = $ARRAY[0] + 1
Until $ARRAY[1] = @WDAY Or $ARRAY[1] < @WDAY
_ArrayDelete($ARRAY, UBound($ARRAY))
Return $ARRAY
;~ _logmem("_sort_wday_array_decrease END")
EndFunc ;==>_sort_wday_array_decreaseFunc _new_datetime($ap_id)
[/autoit] [autoit][/autoit] [autoit]
_logmem("_new_datetime BEGINNING")
Local $Row, $Query, $day_to_add, $newDate, $TimeIncreased, $z
$Query = _sqlitequeryceck($DB, "SELECT minute, wochentag, von, bis FROM zeitplan WHERE arbeitsplan_id=" & $ap_id)
_SQLite_FetchData($Query, $Row)
_sqliteerrorcheck(@error)
_SQLite_QueryFinalize($Query);$Row[1] = $wochentag
[/autoit] [autoit][/autoit] [autoit]
Local $aWday = StringSplit($Row[1], ",")
$aWday = _sort_wday_array($aWday)If $Row[0] = "" Then ;FALL 1 - zu einer bestimmten Uhrzeit
[/autoit] [autoit][/autoit] [autoit]
For $i = 1 To $aWday[0]
If $aWday[$i] = @WDAY Then ;---Wochentag dabei---
If $Row[3] > @HOUR & ":" & @MIN & ":" & @SEC Then ;Fall 1.1
;~ ConsoleWrite("Fall 1 . 1: Wochentag = Heute -> Uhrzeit noch nicht erreicht: " & @MDAY & "/" & @MON & "/" & @YEAR & " " & $Row[3] & @CR)
Return @MDAY & "/" & @MON & "/" & @YEAR & " " & $Row[3]
ElseIf $Row[3] < @HOUR & ":" & @MIN & ":" & @SEC Then ;Fall 1.2
If $Row[1] = @WDAY Then ;Nur der Wochentag
$day_to_add = 7
Else
If $aWday[2] = 1 Then
$day_to_add = 7 - (($aWday[2] - @WDAY) * -1)
ElseIf ($aWday[2] - @WDAY) > 0 Then
$day_to_add = ($aWday[2] - @WDAY)
ElseIf ($aWday[2] - @WDAY) < 0 Then
$day_to_add = ($aWday[2] - @WDAY) + 7
EndIf
EndIf
$newDate = _add_date($day_to_add)
;~ ConsoleWrite("Fall 1 . 2: Wochentag = Heute -> Uhrzeit vorbei: " & $newDate & " " & $Row[3] & @CR)
Return $newDate & " " & $Row[3]
EndIf
EndIf
Next
;---Wochentag NICHT dabei--- # Fall 1.3
If ($aWday[1] - @WDAY) > 0 Then ; #1
$day_to_add = ($aWday[1] - @WDAY)
$newDate = _add_date($day_to_add)
;~ ConsoleWrite("Fall 1 . 3 #1: " & $newDate & " " & $Row[3] & @CR)
Return $newDate & " " & $Row[3]
ElseIf ($aWday[1] - @WDAY) < 0 Then ; #2
$day_to_add = ($aWday[1] - @WDAY) + 7
$newDate = _add_date($day_to_add)
;~ ConsoleWrite("Fall 1 . 3 #2: " & $newDate & " " & $Row[3] & @CR)
Return $newDate & " " & $Row[3]
EndIf
Else
For $i = 1 To $aWday[0] ;---Wochentag dabei---
If $aWday[$i] = @WDAY Then
If $Row[2] > @HOUR & ":" & @MIN & ":" & @SEC Then ;FALL 2.1
;~ ConsoleWrite("Fall 2 . 1: Wochentag = Heute -> Uhrzeit noch nicht erreicht: " & @MDAY & "/" & @MON & "/" & @YEAR & " " & $Row[2] & @CR)
Return @MDAY & "/" & @MON & "/" & @YEAR & " " & $Row[2]
ElseIf $Row[2] < @HOUR & ":" & @MIN & ":" & @SEC And @HOUR & ":" & @MIN & ":" & @SEC < $Row[3] Then ;FALL 2.2
$z = 1
Do
$TimeIncreased = _add_time($Row[2], ($Row[0] * $z))
$z = $z + 1
Until $TimeIncreased > @HOUR & ":" & @MIN & ":" & @SECIf ($TimeIncreased < $Row[3]) Or ($TimeIncreased = $Row[3]) Then ;FALL 2.2
[/autoit] [autoit][/autoit] [autoit]
;~ ConsoleWrite("Fall 2 . 2 #1: " & @MDAY & "/" & @MON & "/" & @YEAR & " " & $TimeIncreased & @CR)
Return @MDAY & "/" & @MON & "/" & @YEAR & " " & $TimeIncreased
Else ;FALL 2.2 #2
$aWday = _sort_wday_array($aWday)
If $aWday[2] = 1 Then
$day_to_add = 7 - (($aWday[2] - $z) * -1)
ElseIf ($aWday[2] - @WDAY) > 0 Then
$day_to_add = ($aWday[2] - $z)
ElseIf ($aWday[2] - @WDAY) < 0 Then
$day_to_add = ($aWday[2] - $z) + 7
EndIf$newDate = _add_date($day_to_add)
[/autoit] [autoit][/autoit] [autoit]
;~ ConsoleWrite("Fall 2 . 2 #2: " & $newDate & " " & $Row[2] & @CR)
Return $newDate & " " & $Row[2]
EndIf
ElseIf (@HOUR & ":" & @MIN & ":" & @SEC > $Row[3]) Or (@HOUR & ":" & @MIN & ":" & @SEC = $Row[3]) Then ;FALL 2.3
$aWday = _sort_wday_array($aWday)
For $i = 0 To UBound($aWday) - 1
;~ ConsoleWrite(@CR & "$aWday[$i]: " & $aWday[$i])
Next
If $Row[1] = @WDAY Then ;Nur der Wochentag
$day_to_add = 7
Else
If $aWday[2] = 1 Then
$day_to_add = 7 - (($aWday[2] - @WDAY) * -1)
ElseIf ($aWday[2] - @WDAY) > 0 Then
$day_to_add = ($aWday[2] - @WDAY)
ElseIf ($aWday[2] - @WDAY) < 0 Then
$day_to_add = ($aWday[2] - @WDAY) + 7
EndIf
EndIf
$newDate = _add_date($day_to_add)
;~ ConsoleWrite("Fall 2 . 3: " & $newDate & " " & $Row[2] & @CR)
Return $newDate & " " & $Row[2]
EndIf
EndIf
Next
If ($aWday[1] - @WDAY) > 0 Then ; #1
$day_to_add = ($aWday[1] - @WDAY)
$newDate = _add_date($day_to_add)
;~ ConsoleWrite("Fall 2 . 4 #1 " & $newDate & " " & $Row[2] & @CR)
Return $newDate & " " & $Row[2]
ElseIf ($aWday[1] - @WDAY) < 0 Then ; #2
$day_to_add = ($aWday[1] - @WDAY) + 7
$newDate = _add_date($day_to_add)
;~ ConsoleWrite("Fall 2 . 4 #2 " & $newDate & " " & $Row[2] & @CR)
Return $newDate & " " & $Row[2]
EndIf
EndIf
_logmem("_new_datetime END")
EndFunc; Hilfe MsgBox
[/autoit] [autoit][/autoit] [autoit]
Func hilfe()
MsgBox(64, "Hilfe", "Hilfe") ;~ COOMING SOON
EndFunc ;==>hilfe; Info MsgBox
[/autoit] [autoit][/autoit] [autoit]
Func info()
MsgBox(64, "Info", "Info") ;~ COOMING SOON
EndFunc ;==>infoFunc _sqlitequeryceck($DB, $sQuery)
[/autoit] [autoit][/autoit] [autoit]
Local $retQuery
If _SQLite_Query($DB, $sQuery, $retQuery) <> 0 Then
_sqliteerrorcheck(@error)
_SQLite_QueryFinalize($retQuery)
Return 0
EndIf
Return $retQuery
EndFunc ;==>_sqlitequeryceckFunc _sqliteerrorcheck($sql_error)
[/autoit] [autoit][/autoit] [autoit]
If $sql_error = -1 Then
ConsoleWriteError("Fehler, _SQLite_Exec Error: " & $sql_error & ". SQLite reported an error (Check return value)")
ElseIf $sql_error = 1 Then
ConsoleWriteError("Fehler, _SQLite_Exec Error: " & $sql_error & ". Error calling SQLite API 'sqlite3_exec'")
ElseIf $sql_error = 2 Then
ConsoleWriteError("Fehler, _SQLite_Exec Error: " & $sql_error & ". Call prevented by SafeMode")
ElseIf $sql_error = 3 Then
ConsoleWriteError("Fehler, _SQLite_Exec Error: " & $sql_error & ". Error Processing Callback from within _SQLite_GetTable2d")
ElseIf $sql_error = 4 Then
ConsoleWriteError("Fehler, _SQLite_Exec Error: " & $sql_error & ". Error while converting SQL statement to UTF-8")
EndIf
EndFunc ;==>_sqliteerrorcheckFunc _schreibe_log($sError, $sAp_id, $sAp_name, $sGeplante_startzeit, $sApp_name, $sBefehl, $sParameter, $sStatus)
[/autoit] [autoit][/autoit] [autoit]
Local $hfile = FileOpen("log11111111111.txt", 1)
;Beispiel: [12.11.2012 16:14:30][OK] Arbeitsplan_ID: 1 | Arbeitsplan_Name: AP 1 | Geplante_Startzeit: 16:00 | Arbeitspunkt_Name: Hello World | Status: wurde gestartet
FileWriteLine($hfile, "[" & @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & "][" & $sError & "] " & $sAp_id & " | " & _
$sAp_name & " | " & $sGeplante_startzeit & " | " & $sApp_name & " | " & $sBefehl & " " & $sParameter & " | " & $sStatus)
FileClose($hfile)
EndFunc ;==>_schreibe_logFunc _logmem($sPos)
[/autoit] [autoit][/autoit] [autoit]
Local $hfl = FileOpen($fl_name,1)
If $hfl = -1 Then MsgBox(0,'Memstats File Open Error','File Name = ' & $fl_name)Local $aMem = _winapi_getprocessmemoryinfo()
[/autoit] [autoit][/autoit] [autoit]FileWrite($hfl, StringFormat('Current Private Space = %010i ' & $aMem[0], $aMem[1], $aMem[2], $aMem[3], $aMem[4], $aMem[5], $aMem[6], $aMem[7], $aMem[8], $aMem[9]) & " " & $sPos & " [" & _now() & "]" & @lf)
[/autoit] [autoit][/autoit] [autoit]FileClose($hfl)
[/autoit] [autoit][/autoit] [autoit]
$hfl = 0
EndFuncFunc _ReduceMemory($i_PID = -1)
[/autoit] [autoit][/autoit] [autoit]
If $i_PID <> -1 Then
;kernel32.dll - OpenProcess - Opens an existing local process object.
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
;psapi.dll - EmptyWorkingSet - Removes as many pages as possible from the working set of the specified process.
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
;kernel32.dll - CloseHandle - Closes an existing local process object.
DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
Else
;s.o.
Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
EndIf
Return $ai_Return[0]
EndFunc ;==>_ReduceMemoryFunc _exit()
[/autoit]
;~ AdlibUnRegister("_ReduceMemory")
_SQLite_Close($usedb)
_SQLite_Shutdown()
Exit
EndFunc ;==>_exitMein MemLog sagt (2 Durchläufe):
Code
Alles anzeigenCurrent Private Space = 0030285824 7870 Scriptstart --------- [28.01.2013 14:57:17] Current Private Space = 0030662656 7968 _load BEGINNING [28.01.2013 14:57:23] Current Private Space = 0030662656 7968 _load SQL-1 [28.01.2013 14:57:23] Current Private Space = 0030720000 7982 _load SQL-1 [28.01.2013 14:57:23] Current Private Space = 0030720000 7982 _load SQL-2 [28.01.2013 14:57:23] Current Private Space = 0031162368 8090 _load SQL-2 [28.01.2013 14:57:24] Current Private Space = 0031174656 8093 _load before _Array2DSortFree [28.01.2013 14:57:24] Current Private Space = 0031174656 8093 _Array2DSortFree BEGINNING [28.01.2013 14:57:24] Current Private Space = 0031277056 8118 _Array2DSortFree END [28.01.2013 14:57:24] Current Private Space = 0031277056 8118 _load after _Array2DSortFree [28.01.2013 14:57:24] Current Private Space = 0031277056 8118 _load END [28.01.2013 14:57:24] Current Private Space = 0031293440 8122 start_working BEGINNING [28.01.2013 14:57:27] Current Private Space = 0031571968 8190 _new_datetime BEGINNING [28.01.2013 14:57:27] Current Private Space = 0031571968 8190 _load BEGINNING [28.01.2013 14:57:28] Current Private Space = 0031571968 8190 _load SQL-1 [28.01.2013 14:57:28] Current Private Space = 0031625216 8203 _load SQL-1 [28.01.2013 14:57:28] Current Private Space = 0031625216 8203 _load SQL-2 [28.01.2013 14:57:28] Current Private Space = 0031625216 8203 _load SQL-2 [28.01.2013 14:57:28] Current Private Space = 0031625216 8203 _load before _Array2DSortFree [28.01.2013 14:57:28] Current Private Space = 0031625216 8203 _Array2DSortFree BEGINNING [28.01.2013 14:57:28] Current Private Space = 0031698944 8221 _Array2DSortFree END [28.01.2013 14:57:28] Current Private Space = 0031707136 8223 _load after _Array2DSortFree [28.01.2013 14:57:28] Current Private Space = 0031707136 8223 _load END [28.01.2013 14:57:28] Current Private Space = 0031707136 8223 start_working END [28.01.2013 14:57:28] Current Private Space = 0031707136 8223 start_working BEGINNING [28.01.2013 14:57:30] Current Private Space = 0031797248 8245 _new_datetime BEGINNING [28.01.2013 14:57:30] Current Private Space = 0031797248 8245 _stop BEGINNING [28.01.2013 14:57:31] Current Private Space = 0031797248 8245 _load BEGINNING [28.01.2013 14:57:31] Current Private Space = 0031797248 8245 _load SQL-1 [28.01.2013 14:57:31] Current Private Space = 0031846400 8257 _load SQL-1 [28.01.2013 14:57:31] Current Private Space = 0031846400 8257 _load SQL-2 [28.01.2013 14:57:31] Current Private Space = 0031846400 8257 _load SQL-2 [28.01.2013 14:57:31] Current Private Space = 0031846400 8257 _load before _Array2DSortFree [28.01.2013 14:57:31] Current Private Space = 0031846400 8257 _Array2DSortFree BEGINNING [28.01.2013 14:57:31] Current Private Space = 0031899648 8270 _Array2DSortFree END [28.01.2013 14:57:32] Current Private Space = 0031899648 8270 _load after _Array2DSortFree [28.01.2013 14:57:32] Current Private Space = 0031899648 8270 _load END [28.01.2013 14:57:32] Current Private Space = 0031899648 8270 start_working END [28.01.2013 14:57:32]Wie man sehen kann, wird an den SQL Stellen der Speicher erhöht. Das Array wird größer, würde ich noch verstehen ... aber wieso es dabei bleibt, verstehe ich nicht ... oder sieht zufällig jmd noch einen dicken SQL Fehler o.O?
Grüße
-
Und der Tipp aus dem englischen Forum mit dem AdlibRegister war korrekt. Nach fast 10 Wochen Fehlersuche hab ich ihn *___*
-
Wie du vll. selbst gesehen hast das mit dem Array lag daran dass man erst laden klicken muss, hab ich vergessen zu erwähnen. Sorry.
Bei mir war es bisher mit dem von 1stellig auf 2stellig nicht nur, auch zwischendurch .... hmmm

Was heisst meine Schlussfolgerung ... ich war oder bin der Meinung wenn jetzt kein Fehler mehr in dem Code ist muss ja AutoIt einen haben, da es ja nicht normal ist das ein programm im Speicher ununterbrochen wächst

Ich habe noch einen heißen Tipp aus dem englischen Forum bekommen ... AdlibRegister ... ich habe ein Sleep(1000) und Adlib ist bei 1000, d.h. ich habe wohlmöglich alles was noch offen war an Variablen etc. nochmal geöffnet oder sowas ... habe den Fehler behoben und beobachte grad das Script ... bisher sieht es gut aus, es läuft aber auch erst seit ~ 3 Stunden ... abwarten und mal hoffen dass dort der Fehler war...
Grüße
-
Bei den letzten 4 Scripts die aufgebaut waren wie: GUI + Control + eine Schleife die 40.000 Items zu einem Control hinzufügt, und dann löscht) kam die Antwort: Ich kann keinen Fehler sehen ...
Dann haben noch zwei andere das Problem erklärt dann kam nie wieder eine Antwort

-
Bei der Nutzung von Garbage Collectoren ist bei mir bisher immer dann der zugesicherte Speicher in die Luft geschossen.
Aber ich meine auch wenn es nur ein wenig ist, er sollte doch nicht steigen? Und das wiederum müsste bedeuten ich müsste irgendwo einen Fehler haben, oder es liegt an AutoIt. Das ist ja auch wieso ich euch beten wollte da mal drüber zu gucken

Das deprimierende ist, es sind mittlerweile rel. viele Befehle in AutoIt die in meinen Augen Speicherfehler hervorrufen. Habe schon zig Testscripts geschrieben und jedesmal das gleiche
-
Ouhh mist, die ist abhanden gekommen

Problem: Ich starte das Dingen, es läuft durch. Hier wird quasi simuliert, dass Batch-Dateien abgearbeitet werden. Simulation -> daher auch die primitive immer gleiche feste Zuweisung in der Funktion lade_aktive_aps.
Man schaue sich das Spiel im Taskmanager an. Bei mir lag der Arbeitspeicher nach dem start bei ~ 11.600K ... Nach ca. 16 Stunden war er bei ~11.750K. Dies heisst dass entweder eine der genutzen Funktionen von AutoIt nicht den gesamten Speicher freigibt, oder ich irgendwo eine Variable o.ä. jedesmal öffne und nicht schließe.
Meine Tests: Je 100x und 300x eine Batch Datei starten: Run, Run @ComSpec, RunWait, RunWait @ComSpec, ShellExecute, ShellExecute CMD, ShellExecuteWait, ShellExecuteWait CMD ... Ergebis. Bis auf Run und RunWait sind alle Scripts im Speicher gestiegen. Daher nutze ich hier Run.
Dann habe ich ein Testscript geschrieben, dass Einfach nur in eine Datei ('log') etwas schreibt. 2 Tests gemacht mit 100.000 Einträgen, speicher steigt nicht.Somit bin ich der Meinung wenn das oben gespoilerte Script im Speicher noch steigt, müsste wenn es mein Verschulden ist ja noch ein Fehler bei den deklarationen oder so vorhanden sein, sonst ergibt das ja keinen Sinn.
Grüße
-
Altersbedingt habe ich noch auf anderen Systemen entwickelt (mein erster PC hatte 8 MHz !). Da gab es natürlich ein paar technische Begrenzungen mehr als heutzutage...
Bis heute programmiere ich noch größtenteils auf Unix-/Linux-Server ohne echte grafische Oberflächen - wo die Bildschirmbegrenzung bei 80 Zeichen x 25 Zeilen liegt.
Das macht erfinderisch bei der Gestaltung von Masken...
So hab ich in der Schule bis zum August auch programmiert

Schön COMAL und PASCAL mit Blockgrafik

-
Hallo zusammen,
es klingt vielleicht doof, aber könnte mir mal bitte jemand von euch sagen, ob in dem folgenden Script Fehler sind im Sinne von: Ich deklariere eine Variable oder so, und gebe sie nicht frei?
Ihr würdet mir echt sehr helfen. Danke im Vorraus.Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Opt("MustDeclareVars", 1)
OnAutoItExitRegister("_exit")Global $aLVERSATZ_bot[1][3]
[/autoit] [autoit][/autoit] [autoit]
Global $aLVERSATZ_top[5][2]
Global $ablaufstatus;#GUI 1
[/autoit] [autoit][/autoit] [autoit]
Global $aufgabenlistefenster = GUICreate("Aufgabenliste", 250, 390)Global $zaehler_label = 0
[/autoit] [autoit][/autoit] [autoit]
Global $hzaehler_label = GUICtrlCreateLabel("0", 50, 72, 200, 20)
Global $aladeaktiveap_button = GUICtrlCreateButton("Lade aktive AP", 140, 40, 100, 30)
Global $astart_button = GUICtrlCreateButton("Start", 30, 5, 50, 30)
Global $astop_button = GUICtrlCreateButton("Stop", 30, 40, 50, 30)GUISetState(@SW_SHOW, $aufgabenlistefenster)
[/autoit] [autoit][/autoit] [autoit];Aufgabenliste
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
GUICtrlSetOnEvent($aladeaktiveap_button, "lade_aktive_aps")
GUICtrlSetOnEvent($astart_button, "pruefe_ablauf")
GUICtrlSetOnEvent($astop_button, "beende_ablauf")
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit", $aufgabenlistefenster)While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc lade_aktive_aps()
[/autoit] [autoit][/autoit] [autoit]
$aLVERSATZ_bot[0][0] = "0"
$aLVERSATZ_bot[0][1] = "18/01/2013 08:00:00"
$aLVERSATZ_bot[0][2] = "Test AP"
EndFunc ;==>lade_aktive_apsFunc pruefe_ablauf()
[/autoit] [autoit][/autoit] [autoit]
$ablaufstatus = True
AdlibRegister("vergleiche_zeitstempel", 1000)
EndFunc ;==>pruefe_ablaufFunc vergleiche_zeitstempel()
[/autoit] [autoit][/autoit] [autoit]
Local $a_row0, $naechste_geplante_startdatum, $aDatumForm
If UBound($aLVERSATZ_bot) = 0 Then
beende_ablauf()
Return 0
EndIf
$a_row0 = StringSplit($aLVERSATZ_bot[0][1], " ")
$naechste_geplante_startdatum = $a_row0[1]
$a_row0 = StringSplit($a_row0[2], ":")$aDatumForm = StringSplit($naechste_geplante_startdatum, "/")
[/autoit] [autoit][/autoit] [autoit]If $aDatumForm[3] * 365 + $aDatumForm[2] * 30 + $aDatumForm[1] = @YEAR * 365 + @MON * 30 + @MDAY Then
[/autoit] [autoit][/autoit] [autoit]
If $a_row0[1] * 3600 + $a_row0[2] * 60 = @HOUR * 3600 + @MIN * 60 + @SEC Or $a_row0[1] * 3600 + $a_row0[2] * 60 < @HOUR * 3600 + @MIN * 60 + @SEC Then
$a_row0 = 0
$aDatumForm = 0
starte_ablauf()
EndIf
ElseIf $aDatumForm[3] * 365 + $aDatumForm[2] * 30 + $aDatumForm[1] < @YEAR * 365 + @MON * 30 + @MDAY Then
$a_row0 = 0
$aDatumForm = 0
starte_ablauf()
EndIf
$zaehler_label = $zaehler_label + 1
GUICtrlSetData($hzaehler_label, $zaehler_label)
$a_row0 = 0
$naechste_geplante_startdatum = 0
$aDatumForm = 0
EndFunc ;==>vergleiche_zeitstempelFunc starte_ablauf()
[/autoit] [autoit][/autoit] [autoit]
Local $sFehler, $sStatus, $ShellExecute
Local $aBatch[5][5] = [[1, 1, $aLVERSATZ_bot[0][1], "Dateien erzeugen", ""], _
[2, 2, $aLVERSATZ_bot[0][1], "Dateien von neu nach backup kopieren", ""], _
[3, 3, $aLVERSATZ_bot[0][1], "Dateien von neu nach alt kopieren", ""], _
[4, 4, $aLVERSATZ_bot[0][1], "Dateien verschieben", ""], _
[5, 5, $aLVERSATZ_bot[0][1], "_neu_einplanen", ""]]ReDim $aLVERSATZ_top[5][2]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aBatch) - 1
$aLVERSATZ_top[$i][0] = $aBatch[$i][1] * 10
$aLVERSATZ_top[$i][1] = $aBatch[$i][3]
NextFor $i = 0 To UBound($aBatch) - 1
[/autoit] [autoit][/autoit] [autoit]
$sStatus = " ... wird gestartet"
If $aBatch[$i][4] = "" Then
$sFehler = " "
_schreibe_log($sFehler, $aBatch[$i][4], $sStatus)
$sFehler = "OK"
$sStatus = " ... ist beendet"
_schreibe_log($sFehler, $aBatch[$i][4], $sStatus)
Else
$sFehler = " "
_schreibe_log($sFehler, $aBatch[$i][4], $sStatus)
$ShellExecute = Run($aBatch[$i][4], "c:", @SW_HIDE)
If $ShellExecute <> 0 Then
$sFehler = "FEHLER"
$sStatus = " Es ist ein Fehler aufgetreten."
Else
$sFehler = "OK"
$sStatus = " ... ist beendet"
EndIf
_schreibe_log($sFehler, $aBatch[$i][4], $sStatus)
EndIfIf UBound($aLVERSATZ_top) = 1 Then
[/autoit] [autoit][/autoit] [autoit]
$aLVERSATZ_top[0][0] = ""
$aLVERSATZ_top[0][1] = ""
Else
_ArrayDelete($aLVERSATZ_top, 0)
EndIf
Next
Sleep(1000)If UBound($aLVERSATZ_bot) = 1 Then
[/autoit] [autoit][/autoit] [autoit]
$aLVERSATZ_bot[0][0] = ""
$aLVERSATZ_bot[0][1] = ""
$aLVERSATZ_bot[0][2] = ""
Else
_ArrayDelete($aLVERSATZ_bot, 0)
EndIf
$sFehler = 0
$sStatus = 0
$ShellExecute = 0
$aBatch = 0
lade_aktive_aps()
EndFunc ;==>starte_ablaufFunc beende_ablauf()
[/autoit] [autoit][/autoit] [autoit]
AdlibUnRegister("vergleiche_zeitstempel")
$ablaufstatus = False
Return 0
EndFunc ;==>beende_ablaufFunc _exit()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFunc ;==>_exitFunc _schreibe_log($sFehler, $sBefehl, $sStatus)
[/autoit]
Local $hfile
$hfile = FileOpen("log_woBATCHwoSQLwoLV.txt", 1)
FileWriteLine($hfile, "[" & @MDAY & "/" & @MON & "/" & @YEAR & " " & @HOUR & ":" & @MIN & ":" & @SEC & "][" & $sFehler & "] " & $sBefehl & " " & $sStatus)
FileClose($hfile)
EndFunc ;==>_schreibe_log -
Learning by doing
Je nachdem ob du schonmal programmiert hast oder nicht, ist es alles sehr ähnlich ... habe vor zig jahren mal Pascal und Komal gemacht, jetzt C/C++ und AutoIt und habe nun mit PHP noch angefangen ... es ist meist nur andere Syntax aber vom Grundgedanken des Programmierens ist es meiner Ansicht nach ziemlich ähnlich ... -
Ich arbeite mit GDI+ und dann _GDIPlus_ImageSaveToFile und speicher die Bilder als .png.
-
Meine Usernamen sind platt
Genauso platt wie meine Nicks bei diversen Games ...Yaerox -> Ich liebe Scootertuning (als Hobby) und vorallem die Yamaha Aerox.
XO -> XOXO -> Höre schon seit ... puhh
glaube 5 oder 6 Jahren Casper, daher das XO.Mittlerweile heisse ich in allen Games auch Yaerox mit Ausnahme CS, da bin ich die erste und einzig wahre Sterbehilfe AG (ja, erster ESL Account mit diesem Namen :D).