Hallo Forum,
ich hoffe auf Eure Hilfe.
Ich versuche folgende zwei Probleme zu lösen und komme eifnach nicht weiter:
1. In Zeile 47 funktioniert die zweite Bedingung ($line <> "#") einfach nicht. Mache ich eine MsgBox in Zeile 42 steht die # korrekt drin. Tue ich das gleiche aber innerhalb der While-Schleife ist meine MsgBox leer. Mache ich da irgendwas falsch? Ohne die zweite Bedingung läuft das Script durch. Mit der Bedingugn erhalte ich die Fehlermeldung
[autoit]
#include <Array.au3>
#include <GuiListView.au3>
#Include <GuiListBox.au3>
;Deklarieren von Arrays
Dim $array[9]
dim $pause = 1000
;Tastatur und Maus deaktivieren, um Fehler durch den Benutzer auszuschließen
;BlockInput(1)
;Öffent die Konfiguration, lesend!
$cfg = FileOpen("globalA.cfg",0)
;Prüfen ob Datei zum Lesen geöffnet wurde
If $cfg = -1 Then
Exit(1)
EndIf
;Aktiviert das entstprechende Fenster
WinActivate("aktive Datenbank: Database FOR DEMO ONLY")
sleep($pause)
;Öffnen des Dialogs "Subnetze"
Send ("{ALT}")
sleep($pause)
Send ("v")
sleep($pause)
Send ("z")
sleep($pause)
;Drücken des Buttons "Neu"
Send ("{TAB 3}")
sleep($pause)
;Einlesen der Datensätze aus "globalA.cfg"
$zeile = FileReadLine($cfg)
$line = Stringleft($zeile,1)
;Solange $Zeile ungleich -1
While $zeile <> -1
If $line <> "" or $line <> "#" Then
[/autoit][autoit][/autoit][autoit]$array = StringSplit($zeile, ";", 2)
[/autoit][autoit][/autoit][autoit]sleep($pause)
Send("{Enter}")
;Array füllen
$id = $array[0]
$location = $array[1]
$ip = $array[2]
$subnet = $array[3]
$gw = $array[4]
$ip2 = $array[5]
$subnet2 = $array[6]
$netmask = $array[7]
;Eintragen der Werte
Sleep($pause)
Send($id & "-MKNBw")
Sleep($pause)
Send ("{TAB}")
Sleep($pause)
Send("^a")
sleep($pause)
Send("{DEL}")
Send ($location)
Sleep($pause)
Send ("{TAB 2}")
Sleep($pause)
Send($netmask)
Sleep($pause)
Send ("{TAB}")
Sleep($pause)
Send($subnet2)
Sleep($pause)
send("{TAB}")
;Handler für Fenster
$handle = ControlGetHandle("aktive Datenbank: Database FOR DEMO ONLY","","[CLASS:ListView20WndClass; INSTANCE:2]")
;Item in Text finden
$Item = _GUICtrlListView_FindInText($handle, $id)
If $Item >= 0 Then
;Item selektieren
_GUICtrlListView_SetItemFocused($handle,$Item)
;Item blau unterlegen
_GUICtrlListView_SetItemSelected($handle,$Item)
Send ("{TAB}")
Send("{ENTER}")
Send ("{TAB 3}")
sleep(200)
Send("{ENTER}")
Else
MsgBox(1,"debug", "Element "&$id&" nicht vorhanden")
EndIf
EndIf
[/autoit][autoit][/autoit][autoit];Erneutes Einlesen der nächsten Zeile
$zeile = FileReadLine($cfg)
$line = Stringleft($zeile,1)
WEnd
[/autoit][autoit][/autoit][autoit]Send ("{TAB 5}")
Send("{ENTER}")
;Config-File schließen
$cfg = FileClose("globalA.cfg")
Ich versuche folgende zwei Probleme zu lösen und komme eifnach nicht weiter:
1. In Zeile 47 funktioniert die zweite Bedingung ($line <> "#") einfach nicht. Mache ich eine MsgBox in Zeile 42 steht die # korrekt drin. Tue ich das gleiche aber innerhalb der While-Schleife ist meine MsgBox leer. Mache ich da irgendwas falsch? Ohne die zweite Bedingung läuft das Script durch. Mit der Bedingugn erhalte ich die Fehlermeldung:
Zitat...PfadzurDatei\bla.au3 (56) :==> Array variable has incorrect number of subscripts or subscript dimension range exceeded:
$location = $array[1]
$location = ^ ERROR
Der Fehler ist für mich auch klar, er läuft in den If-Zweig rein und hat dann nichts zu füllen, da nur ein Zeichen im Array drin steht. Die Frage ist nur, warum läuft er da überhaupt rein?
2. Mein zweites Problem ist die Abbruchbedingung der Whileschleife mit meinem Konstrukt komme ich irgendwie nie auf die -1, die meine Schleife beenden würde, kann mir da jemand weiterhelfen oder zumindest nen Tip geben. Ich hab echt keien Ahnung mehr was ich noch probieren soll
Ich bedanke mich für Eure Mühe im Voraus.
Mfg
xeon2k