Array Syntax Frage

  • Hallo Freunde der leichten Unterhaltung ;o))

    Ich bin kurz vor meinem Nagios Plugin Durchbruch, es fehlt nur noch der entscheidene Punkt. Habe ein Problem mit einem Array Syntax
    Ich habe sowas vor:

    Code
    $Meldungen[$x] = " Toner Lagerbestand Kritisch || "&DruckerTyp[$i]& ": "&$Tonerartikel[$i]& " || Aktueller Stand: "&$Tonerbestand[$i]&"

    Plan ist, dieses Array später als Echo auszugeben. Ist sowas denn überhaupt möglich ??

    Grüße
    CrazyER

  • Ok, versuche es nochmal zu verdeutlichen.

    Hier mein aktueller Code:

    Frage 1:
    Diesen Syntax mag er nicht:

    Code
    $Meldungen[$x] = " Toner Lagerbestand Kritisch || "&DruckerTyp[$i]& ": "&$Tonerartikel[$i]& " || Aktueller Stand: "&$Tonerbestand[$i]&"

    Frage 2:
    ich benötige ein "_RunDOS("echo" das mit mein ganzes Array komplett in einer Zeile ausgibt. Ist sowas möglich, oder muss ich mir ne ganz neu Strategie einfallen lassen ??


    Hoffe, das es nun verständlicher rüber kommt.

  • Moinsen,

    das letzte Anführungszeichen ist zuviel ...

    Spoiler anzeigen
    [autoit]

    #include <Process.au3>
    Const $dateiname = "c:\TONERSTAND\Kyocera FS3900DN.txt"
    Const $inifile = "D:\AUTOIT\Tonerstandplugin.ini"
    $i = 0
    $y = 1
    $x = 0
    $Section = IniReadSectionNames ($inifile)
    $maxArray = $Section[0]
    Dim $DruckerTyp[$maxArray]
    Dim $Tonerartikel[$maxArray]
    Dim $Tonermeldebestand[$maxArray]
    Dim $Tonerbestand[$maxArray]

    [/autoit] [autoit][/autoit] [autoit]

    While $i < $maxArray
    $DruckerTyp[$i] = IniRead($inifile, $Section[$y], "DruckerTyp","")
    $Tonerartikel[$i] = IniRead($inifile, $Section[$y], "Tonerartikel","")
    $Tonermeldebestand[$i] = IniRead($inifile, $Section[$y], "Tonermeldebestand","")
    $Tonerbestand[$i] = IniRead($inifile, $Section[$y], "Tonerbestand","")
    $i += 1
    $y += 1
    WEnd
    $i = 0
    While $i < $maxArray
    If $Tonerbestand[$i] <= $Tonermeldebestand[$i] Then
    $x += 1
    EndIf
    WEnd
    Dim $Meldungen[$x]
    $i = 0
    $y = 0
    While $i < $maxArray
    If $Tonerbestand[$i] <= $Tonermeldebestand[$i] Then
    $Meldungen[$x] = " Toner Lagerbestand Kritisch || "& _
    $DruckerTyp[$i]& ": "&$Tonerartikel[$i]& _
    " || Aktueller Stand: "&$Tonerbestand[$i]
    $y += 1
    $i += 1
    Else
    $i += 1
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]


    Wenn Du die Anführungszeichen mit ausgeben möchtest, dann verpacke sie in einfache Anführungszeichen. ;)

    EDIT:
    Außerdem ist $Meldungen[$x] auch nicht das was Du möchtest, glaube ich, sollte es nicht $y sein ???


    LG
    Greenhorn


    2 Mal editiert, zuletzt von Greenhorn (14. November 2008 um 13:01)

  • stimmt, wollte wirklich $Meldungen[$y] und oben hatte ich noch ein Endlosloop. Soweit erstmal danke.

    Doch wie bekomme ich nun alle Arrays auf einmal aufgerufen ??

    Code
    "_RunDOS("echo "&Meldungen[$y]&)

    damit bekomm ich ja nur ein Arrayinhalt. Und mit einer Schleife bekomme ich mehrere Echos, was ich auch nicht möchte.

    Gibt es da ein Befehl für ?? *grübbel*

  • Du möchtest doch nur die $Meldungen ausgeben, oder ?
    Dieses Array enthält doch auch nur kritische Meldungen, auch richtig ?
    Warum möchtest Du sie dann nicht alle ausgeben ?

    Was möchtest Du denn wann und wie ausgeben lassen ?

    Wenn Du beim kompilieren 'Create CUI instead of GUI EXE.' auswählst kannst Du ConsoleWrite () für die Ausgabe benutzen. ;)


    Gruß


  • also $x gibt mir an, wieviel Fehlmeldungen ich haben. Werde dann eine If schleife machen, in der $x > 1 dann alle Fehlmeldungen als Echo ausgegeben werden, ansonsten kommt eine OK Meldung als Echo.

    Ob Nagios mit dem ConsoleWrite() etwas anfangen kann, muss ich erst noch testen.
    Aber das löst dann eigentlich noch immer nicht mein Problem. Ich muss wahrscheinlich alle Arrayinhalte in einen String bekommen, damit ich dies wieder absetzen kann.

  • Probiere das hier mal kompiliert aus ...

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_outfile=
    #AutoIt3Wrapper_Change2CUI=y
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To 9

    ConsoleWrite ('Hallo Welt!' & @crlf)
    ConsoleWrite ($Meldungen[$i] & @crlf)

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $data
    While True
    $data &= ConsoleRead()
    If @error Then ExitLoop
    Sleep(25)
    WEnd
    MsgBox(0, "", "Received: " & @CRLF & @CRLF & $data)

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Gruß