Hallo zusammen,
wieder einmal bastel ich mir nen altes Script neu und wieder einmal habe ich mir gedacht, mach es richtig, mach Funktionen. Nun funktioniert es eben mal wieder nicht wie ich es will.
Hier mal das alte Script noch in der einfachen und unübersichtlichen Darstellung:
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=Tonerstandplugin.exe
#AutoIt3Wrapper_Change2CUI=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <Process.au3>
Const $inifile = @ScriptDir&"\Tonerstandplugin.ini"
$i = 0
$y = 1
$x = 1
$Error = 0
$Section = IniReadSectionNames ($inifile)
$maxArray = $Section[0]
Dim $DruckerTyp[$maxArray]
Dim $Tonerartikel[$maxArray]
Dim $Artikelzusatz[$maxArray]
Dim $Tonermeldebestand[$maxArray]
Dim $Tonerbestand[$maxArray]
Dim $TonerMaximalBestand[$maxArray]
Dim $Meldung[$maxArray]
Dim $TonerBestellmenge
Dim $Output
; Ini-Datei wird ausgelesen und in die Arrays geschrieben. $Tonerbestand-/meldebstand werden als Zahl eingelesen, damit ein Verlgeich funktioniert.
While $i < $maxArray
$DruckerTyp[$i] = IniRead($inifile, $Section[$y], "DruckerTyp","")
$Tonerartikel[$i] = IniRead($inifile, $Section[$y], "Tonerartikel","")
$Artikelzusatz[$i] = IniRead($inifile, $Section[$y], "Artikelzusatz","")
$Tonermeldebestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonermeldebestand",""))
$Tonerbestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonerbestand",""))
$TonerMaximalBestand[$i] = Number(IniRead($inifile, $Section[$y], "TonerMaximalBestand",""))
$i = $i + 1
$y = $y + 1
WEnd
$y = 1
$i = 0
If $CmdLine[0] > 0 Then
; Hier wird der eigentliche Check ausgelöst. Dieser prüft den Tonerbestand gegenüber dem Meldebestand.
If $CmdLine[1] == "check" Then
$i = 0
While $i < $maxArray
If $Tonerbestand[$i] <= $Tonermeldebestand[$i] Then
$TonerBestellMenge = $TonerMaximalBestand[$i] - $Tonerbestand[$i]
$Meldung[$x] = '" | "'&$TonerBestellMenge&"x "&$Tonerartikel[$i]&" "&$Artikelzusatz[$i]&" fuer "&$DruckerTyp[$i]
$x = $x +1
$i = $i +1
Else
$i = $i +1
EndIf
WEnd
If $x >1 Then
$Error = 1
EndIf
; Hier wird der $Output mit der $Meldung befüllt/ergenzt
While $x > 0
$Output = $Output &$Meldung[$x]
$x = $x -1
WEnd
; Wenn ein Meldebestand unterschritten worde ist, wird hier die Warnung ausgegeben, ansonsten ist alles OK.
If $Error >= 1 Then
_RunDOS("echo Tonerbestand KRITISCH ! "&$Output)
exit 2
Else
_RunDOS("echo Tonerbestand OK")
exit 0
EndIf
Else
; Hier wird der Tonerstand angepasst, wenn das Plugin mit dem $Tonerartikel als Parameter aufgerufen wird
While $i < $maxArray
If $CmdLine[1] == $Tonerartikel[$i] Then
$Tonerbestand[$i] = $Tonerbestand[$i] - 1
IniWrite ($inifile, $Section[$y], "Tonerbestand", $Tonerbestand[$i] )
EndIf
$y = $y +1
$i = $i +1
WEnd
EndIf
Else
_RunDOS("echo Bitte Parameter mit angeben")
exit 3
EndIf
und hier nun meine Version mit Funktionen:
Spoiler anzeigen
#include <Process.au3>
[/autoit] [autoit][/autoit] [autoit]Dim $DruckerTyp[$maxArray]
Dim $Tonerartikel[$maxArray]
Dim $Artikelzusatz[$maxArray]
Dim $Tonermeldebestand[$maxArray]
Dim $Tonerbestand[$maxArray]
Dim $TonerMaximalBestand[$maxArray]
Dim $Meldung[$maxArray]
Dim $TonerBestellmenge
Dim $Output
Dim $Section
Dim $maxArray
Dim $x
Dim $y
Dim $i
Select
Case $CmdLine[1] == "Geb.1"
$inifile = @ScriptDir&"\1_Tonerstandplugin.ini"
_INIlesen()
_Tonerlisteanpassung()
Case $CmdLine[1] == "Geb.2"
$inifile = @ScriptDir&"\2_Tonerstandplugin.ini"
_INIlesen()
_Tonerlisteanpassung()
Case $CmdLine[1] == "Geb.3"
$inifile = @ScriptDir&"\3_Tonerstandplugin.ini"
_INIlesen()
_Tonerlisteanpassung()
Case $CmdLine[1] == "Geb.4"
$inifile = @ScriptDir&"\4_Tonerstandplugin.ini"
_INIlesen()
_Tonerlisteanpassung()
Case $CmdLine[1] == "check"
_INIlesen()
_check()
Case $CmdLine[0] < 0
_RunDOS("echo Bitte Parameter mit angeben")
exit 3
EndSelect
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _INIlesen()
$i = 0
$y = 1
$x = 1
$Error = 0
$Section = IniReadSectionNames ($inifile)
$maxArray = $Section[0]
; Ini-Datei wird ausgelesen und in die Arrays geschrieben. $Tonerbestand-/meldebstand werden als Zahl eingelesen, damit ein Verlgeich funktioniert.
While $i < $maxArray
$DruckerTyp[$i] = IniRead($inifile, $Section[$y], "DruckerTyp","")
$Tonerartikel[$i] = IniRead($inifile, $Section[$y], "Tonerartikel","")
$Artikelzusatz[$i] = IniRead($inifile, $Section[$y], "Artikelzusatz","")
$Tonermeldebestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonermeldebestand",""))
$Tonerbestand[$i] = Number(IniRead($inifile, $Section[$y], "Tonerbestand",""))
$TonerMaximalBestand[$i] = Number(IniRead($inifile, $Section[$y], "TonerMaximalBestand",""))
$i = $i + 1
$y = $y + 1
WEnd
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _check()
; Hier wird der eigentliche Check ausgelöst. Dieser prüft den Tonerbestand gegenüber dem Meldebestand.
$y = 1
$i = 0
While $i < $maxArray
If $Tonerbestand[$i] <= $Tonermeldebestand[$i] Then
$TonerBestellMenge = $TonerMaximalBestand[$i] - $Tonerbestand[$i]
$Meldung[$x] = '" | "'&$TonerBestellMenge&"x "&$Tonerartikel[$i]&" "&$Artikelzusatz[$i]&" fuer "&$DruckerTyp[$i]
$x = $x +1
$i = $i +1
Else
$i = $i +1
EndIf
WEnd
If $x >1 Then
$Error = 1
EndIf
; Hier wird der $Output mit der $Meldung befüllt/ergenzt
While $x > 0
$Output = $Output &$Meldung[$x]
$x = $x -1
WEnd
; Wenn ein Meldebestand unterschritten worde ist, wird hier die Warnung ausgegeben, ansonsten ist alles OK.
If $Error >= 1 Then
_RunDOS("echo Tonerbestand KRITISCH ! "&$Output)
exit 2
Else
_RunDOS("echo Tonerbestand OK")
exit 0
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func _Tonerlisteanpassung()
; Hier wird der Tonerstand angepasst, wenn das Plugin mit dem $Tonerartikel als Parameter aufgerufen wird
$i = 0
$y = 1
While $i < $maxArray
If $CmdLine[2] == $Tonerartikel[$i] Then
$Tonerbestand[$i] = $Tonerbestand[$i] - 1
IniWrite ($inifile, $Section[$y], "Tonerbestand", $Tonerbestand[$i] )
EndIf
$y = $y +1
$i = $i +1
WEnd
EndFunc
Kann mir nun mal einer erklären, was ich tun muss, damit jede Funktion jede Variable kennt ??
Danke im voraus.
Grüße
CrazyER