Externe au3 Datei via Include wird nicht gezogen

  • Hallo, ich muss leider diese Frage stellen, weil den Begriff "Include" in die Suchmaske eingeben nicht sehr glücklich ist.

    Folgendes kleines Problem.

    Ich habe mir ein Programm A geschrieben, welches bisher mit hartcodierten Werten arbeitet.
    Diese Werte möchte ich jetzt dynamisch verwalten.

    Hierzu habe ich mir ein Programm B (admin.au3) gebaut, welche eine GUI öffnet, wo ich die Wert dann ändern kann.
    Wenn ich das Programm B allein starte, geht es auf. Ich habe dort alles in einer Funktion, die ich auch dort aufrufe.
    Alle Variablen habe ich Global deklariert

    Jetzt möchte ich gerne in meine Programm A dieses Programm B mit einbinden.

    Dazu habe ich den Aufruf des Funktion aus Programm B rausgenommen und in Programm A integriert.
    Die admin.au3 Datei liegt im gleichen Verzeichnis wie die au3 von Programm A

    Wenn ich den Include ganz oben in Programm A (also bei den anderen Includes) setze, dann startet Programm A ganz kurz und beendet sich wieder

    [autoit]

    #region ; Include Dateien
    #include <admin.au3>
    #include <Date.au3>
    #include <GUIConstantsEx.au3>
    #NoTrayIcon
    #endregion ; Include Dateien

    [/autoit]

    Wenn ich den Include kurz vor Aufruf der Funktion einbaue (welche über eine vorher definierten Menüpunkt aufgerufen wird), also so

    [autoit]

    Case $GUI_Menue_Datei_Administration
    #include <admin.au3>
    Local $passwd = InputBox("Administrative Anmeldung: ", "Bitte Passwort eingeben.", "", "*")
    If @error <> 1 Then
    If $passwd = "ganzarggeheimespasswortdasgarniemandwissendarf" Then
    ;MsgBox(0, "Passwort: ", "wurde richtig eingegeben, es könnte jetzt eine administrative Funktion aufgerufen werden")
    _Admin()
    Else
    MsgBox(0, "Passwort: ", "wurde NICHT richtig eingegeben !")
    Exit
    EndIf
    EndIf

    [/autoit]


    dann wird beim drücken von F5 die admin.au3 geöffnet (also in SciTE) und ich bekomme direkt unterhalb des Funktionsaufruf

    [autoit]

    Func _Admin()

    [/autoit]


    in einem roten umrandeten Kasten die Fehlermeldung
    ERROR: missing EndSwitch
    ERROR: missing Wend
    Die Funktion wird mit

    [autoit]

    EndFunc ;==>_Admin

    [/autoit]

    Damit fange ich jetzt so gar nichts an.

    Frage 1: Wo muss den Include hinsetzen
    Frage 2: Was muss ich noch beachten
    Frage 3: Wie gehe ich am besten vor, um die Fehler zu finden

    Gibt es eine Möglichkeit das Script Schritt für Schritt laufen zu lassen ?

    Gruss Hassan

  • Und dein "admin.au3", bzw. die Funktion "_Admin()" enthält kein "Exit"-Befehl ?
    Am besten Du stellst die "admin.au3" mal mit ein. Ich tippe darauf, das dort der Fehler ist.

    Und normal sollten die #include's am Anfang stehen. Wenn das Script später kompiliert ist, wäre es völlig egal wo Du es hinschreibst, weil es vor dem Kompilerlauf in das Script integriert wird.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Nein es ist eben nicht egal wo die includes stehen. Soweit ich weiß werden die Quelltexte der include Dateien dort vom compiler eingefügt wo das #include Statement steht, deswegen gehören includes Grundsätzlich an den Scriptanfang, da es sonst in den meisten Fällen zu Syntax Fehlern kommt, wie man es auch der Fehlermeldung entnehmen kann.

    Wichtig sind außerdem noch folgende Dinge:

    Handelt es sich nicht um ein Standardinclude aus dem Autoit Installationsordner muss die Datei durch eine der unteren Varianten includiert werden:

    [autoit]


    #include "DateiImScriptVerzeichnis.au3"
    #include "C:\test\dateiIrgendwoAufDerHDD.au3"
    #include "..\..\relativePfadangabe.au3"
    ; nur bei Standard includes wird <includename.au3> verwendet, ansonsten immer Anführungszeichen.

    [/autoit]

    Man sollte ausserdem darauf achten, dass globale Variablen in den Includes so benannt werden sollten, dass sich diese nicht mit den globalen Variablen im Hauptscript überschneiden, bevorzugt sollte man in zu inkludierenden Dateien lediglich Funktionen mit lokal deklarierten Variablen verwenden. Ausserdem darf es nicht passieren, dass Funktionen im Hauptscript gleich benannt sind wie in der Include Datei, auch hier sollte man bei der Namensgebung in den includes aufpassen.

  • Danke erst mal,

    hier wie gewünscht die admin.au3.
    Ist sicherlich nicht schön, und auch noch nicht fertig, aber Ihr werdet das schon selbst sehen :)

    admin.au3
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Global $var_sz_link1, $var_sz_link2, $var_sz_link3, $var_sz_link4, $var_f_link1, $var_f_link2, $var_f_link3, $var_f_link4; Linke Ränder
    Global $var_labellaengeInput, $var_top1, $var_top2, $var_top3, $var_top4, $var_top5, $var_top6, $var_top7, $var_top8, $var_top9; Obere Ränder
    Global $var_startzeit_sz_wt, $var_endzeit_sz_wt, $var_startzeit_sz_we, $var_endzeit_sz_we, $var_maxzeit_sz_wt, $var_maxzeit_sz_we, $var_startzeit_f, $var_endzeit_f, $var_maxzeit_f, $var_bonuszeit; Zeiten
    Global $var_spaltendifferenz1, $var_labellaengeInput, $var_labellaengeLabel; Differenzabstände
    Global $GUI_Einstellungen, $GUI_Einstellungen_Daten, $GUI_Einstellungen_Daten_SS
    Global $Label1, $Label2, $Label3, $Label4, $Label5, $Label6, $Label7, $Label8, $Label9, $Label10, $Label11, $Label12, $Label13, $Label14, $Label15, $Label16, $Label17, $Label18, $Label19, $Label20, $Label21, $Label22, $Label23
    Global $Group1, $Group2, $Group3, $Checkbox1

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

    $var_sz_link1 = 60
    $var_sz_link2 = 140
    $var_sz_link3 = 200
    $var_sz_link4 = 260

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

    $var_f_link1 = 400
    $var_f_link2 = 480
    $var_f_link3 = 540
    $var_f_link4 = 600

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

    $var_labellaengeInput = 45
    $var_labellaengeLabel = 60
    $var_spaltendifferenz1 = 30

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

    $var_top1 = 100
    $var_top2 = $var_top1 + $var_spaltendifferenz1
    $var_top3 = $var_top2 + $var_spaltendifferenz1
    $var_top4 = $var_top3 + $var_spaltendifferenz1
    $var_top5 = $var_top4 + $var_spaltendifferenz1
    $var_top6 = $var_top5 + $var_spaltendifferenz1
    $var_top7 = $var_top6 + $var_spaltendifferenz1
    $var_top8 = $var_top7 + 50
    $var_top9 = $var_top1 - $var_spaltendifferenz1

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

    $var_startzeit_sz_wt = "11:00"
    $var_endzeit_sz_wt = "19:30"
    $var_startzeit_sz_we = "08:00"
    $var_endzeit_sz_we = "23:30"
    $var_maxzeit_sz_wt = 30
    $var_maxzeit_sz_we = 60

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

    $var_startzeit_f = "07:00"
    $var_endzeit_f = "23:30"
    $var_maxzeit_f = 60

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

    $var_bonuszeit = 15

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_Einstellungen_Daten_SS
    Exit
    EndSwitch
    WEnd

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

    Func _Admin()
    $GUI_Einstellungen = GUICreate("Einstellungen", 700, 370, -1, -1)
    $GUI_Einstellungen_Daten = GUICtrlCreateMenu("Daten")
    $GUI_Einstellungen_Daten_SS = GUICtrlCreateMenuItem("Speichern und Schließen", $GUI_Einstellungen_Daten)

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

    $Label1 = GUICtrlCreateLabel("Ferienmodus aktiv", 20, 16, 90, 17)
    $Group1 = GUICtrlCreateGroup("Schulzeit", 20, 50, 320, 270)
    GUICtrlSetBkColor($Group1, 0xFFCCFF) ; Rosa

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

    $Label2 = GUICtrlCreateLabel("Montag", $var_sz_link1, $var_top1, $var_labellaengeLabel, 17)
    $Label3 = GUICtrlCreateLabel("Dienstag", $var_sz_link1, $var_top2, $var_labellaengeLabel, 17)
    $Label4 = GUICtrlCreateLabel("Mittwoch", $var_sz_link1, $var_top3, $var_labellaengeLabel, 17)
    $Label5 = GUICtrlCreateLabel("Donnerstag", $var_sz_link1, $var_top4, $var_labellaengeLabel, 17)
    $Label6 = GUICtrlCreateLabel("Freitag", $var_sz_link1, $var_top5, $var_labellaengeLabel, 17)
    $Label7 = GUICtrlCreateLabel("Samstag", $var_sz_link1, $var_top6, $var_labellaengeLabel, 17)
    $Label8 = GUICtrlCreateLabel("Sonntag", $var_sz_link1, $var_top7, $var_labellaengeLabel, 17)

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

    $Label18 = GUICtrlCreateLabel("Start", $var_sz_link2, $var_top9, $var_labellaengeLabel, 17)
    $Label19 = GUICtrlCreateLabel("Ende", $var_sz_link3, $var_top9, $var_labellaengeLabel, 17)
    $Label20 = GUICtrlCreateLabel("Maximal", $var_sz_link4, $var_top9, $var_labellaengeLabel, 17)

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

    Global $Input1 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top1, $var_labellaengeInput, 21)
    Global $Input2 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top1, $var_labellaengeInput, 21)
    Global $Input3 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top1, $var_labellaengeInput, 21)
    Global $Input4 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top2, $var_labellaengeInput, 21)
    Global $Input5 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top2, $var_labellaengeInput, 21)
    Global $Input6 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top2, $var_labellaengeInput, 21)
    Global $Input7 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top3, $var_labellaengeInput, 21)
    Global $Input8 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top3, $var_labellaengeInput, 21)
    Global $Input9 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top3, $var_labellaengeInput, 21)
    Global $Input10 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top4, $var_labellaengeInput, 21)
    Global $Input11 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top4, $var_labellaengeInput, 21)
    Global $Input12 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top4, $var_labellaengeInput, 21)
    Global $Input13 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top5, $var_labellaengeInput, 21)
    Global $Input14 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top5, $var_labellaengeInput, 21)
    Global $Input15 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top5, $var_labellaengeInput, 21)
    Global $Input16 = GUICtrlCreateInput($var_startzeit_sz_we, $var_sz_link2, $var_top6, $var_labellaengeInput, 21)
    Global $Input17 = GUICtrlCreateInput($var_endzeit_sz_we, $var_sz_link3, $var_top6, $var_labellaengeInput, 21)
    Global $Input18 = GUICtrlCreateInput($var_maxzeit_sz_we, $var_sz_link4, $var_top6, $var_labellaengeInput, 21)
    Global $Input19 = GUICtrlCreateInput($var_startzeit_sz_we, $var_sz_link2, $var_top7, $var_labellaengeInput, 21)
    Global $Input20 = GUICtrlCreateInput($var_endzeit_sz_we, $var_sz_link3, $var_top7, $var_labellaengeInput, 21)
    Global $Input21 = GUICtrlCreateInput($var_maxzeit_sz_we, $var_sz_link4, $var_top7, $var_labellaengeInput, 21)

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

    $Label9 = GUICtrlCreateLabel("Bonus Zeit in Minuten: ", 360, 16, 110, 17)
    Global $Input22 = GUICtrlCreateInput($var_bonuszeit, 480, 16, 25, 17)
    GUICtrlSetBkColor($Input22, 0x00ff00) ; Grün

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

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Ferien", 360, 50, 320, 270)
    GUICtrlSetBkColor($Group2, 0xCCFFFF) ; Mintgrün

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

    $Label10 = GUICtrlCreateLabel("Montag", $var_f_link1, $var_top1, $var_labellaengeLabel, 17)
    $Label11 = GUICtrlCreateLabel("Dienstag", $var_f_link1, $var_top2, $var_labellaengeLabel, 17)
    $Label12 = GUICtrlCreateLabel("Mittwoch", $var_f_link1, $var_top3, $var_labellaengeLabel, 17)
    $Label13 = GUICtrlCreateLabel("Donnerstag", $var_f_link1, $var_top4, $var_labellaengeLabel, 17)
    $Label14 = GUICtrlCreateLabel("Freitag", $var_f_link1, $var_top5, $var_labellaengeLabel, 17)
    $Label15 = GUICtrlCreateLabel("Samstag", $var_f_link1, $var_top6, $var_labellaengeLabel, 17)
    $Label16 = GUICtrlCreateLabel("Sonntag", $var_f_link1, $var_top7, $var_labellaengeLabel, 17)

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

    $Label21 = GUICtrlCreateLabel("Start", $var_f_link2, $var_top9, $var_labellaengeLabel, 17)
    $Label22 = GUICtrlCreateLabel("Ende", $var_f_link3, $var_top9, $var_labellaengeLabel, 17)
    $Label23 = GUICtrlCreateLabel("Maximal", $var_f_link4, $var_top9, $var_labellaengeLabel, 17)

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

    Global $Input23 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top1, $var_labellaengeInput, 21)
    Global $Input24 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top1, $var_labellaengeInput, 21)
    Global $Input25 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top1, $var_labellaengeInput, 21)
    Global $Input26 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top2, $var_labellaengeInput, 21)
    Global $Input27 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top2, $var_labellaengeInput, 21)
    Global $Input28 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top2, $var_labellaengeInput, 21)
    Global $Input29 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top3, $var_labellaengeInput, 21)
    Global $Input30 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top3, $var_labellaengeInput, 21)
    Global $Input31 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top3, $var_labellaengeInput, 21)
    Global $Input32 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top4, $var_labellaengeInput, 21)
    Global $Input33 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top4, $var_labellaengeInput, 21)
    Global $Input34 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top4, $var_labellaengeInput, 21)
    Global $Input35 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top5, $var_labellaengeInput, 21)
    Global $Input36 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top5, $var_labellaengeInput, 21)
    Global $Input37 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top5, $var_labellaengeInput, 21)
    Global $Input38 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top6, $var_labellaengeInput, 21)
    Global $Input39 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top6, $var_labellaengeInput, 21)
    Global $Input40 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top6, $var_labellaengeInput, 21)
    Global $Input41 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top7, $var_labellaengeInput, 21)
    Global $Input42 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top7, $var_labellaengeInput, 21)
    Global $Input43 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top7, $var_labellaengeInput, 21)

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

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 120, 16, 17, 17)
    GUISetState(@SW_SHOW)

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

    EndFunc ;==>_Admin

    [/autoit]


    Im Hauptprogramm stehen die Includes jetzt ganz oben

    meine Includes
    [autoit]

    #region ; Include Dateien
    #include "admin.au3"
    #include <Date.au3>
    #include <GUIConstantsEx.au3>
    #NoTrayIcon
    #endregion ; Include Dateien

    [/autoit]


    und der Aufruf der admin.au3 erfolgt so

    der Funktionsaufruf
    [autoit]

    Case $GUI_Menue_Datei_Administration
    Local $passwd = InputBox("Administrative Anmeldung: ", "Bitte Passwort eingeben.", "", "*")
    If @error <> 1 Then
    If $passwd = "istimmernochganzarggeheim:-)" Then
    _Admin()
    ;MsgBox(0, "Passwort: ", "wurde richtig eingegeben, es könnte jetzt eine administrative Funktion aufgerufen werden")
    Exit
    Else
    MsgBox(0, "Passwort: ", "wurde NICHT richtig eingegeben !")
    Exit
    EndIf
    EndIf

    [/autoit]


    Wie gesagt, beide au3 Scripte liege im gleichen Verzeichnis.
    Wenn jetzt mit F5 die Hauptanwendung starte, passiert optisch gar nichts. In SciTE bekomme ich folgende Ausgabe:

    Ausgabe in SciTE
    Code
    >"C:\MyApps\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "Z:\AutoIT\Projekte\Eigene\KidsControlLight\KCL - Kopie.au3" /UserParams    
    +>16:15:39 Starting AutoIt3Wrapper v.2.1.0.33    Environment(Language:0407  Keyboard:00000407  OS:WIN_7/Service Pack 1  CPU:X64 OS:X64)
    >Running AU3Check (1.54.22.0)  from:C:\MyApps\AutoIt3
    +>16:15:39 AU3Check ended.rc:0
    >Running:(3.3.8.1):C:\MyApps\AutoIt3\autoit3.exe "Z:\AutoIT\Projekte\Eigene\KidsControlLight\KCL - Kopie.au3"    
    --> Press Ctrl+Alt+F5 to Restart or Ctrl+Break to Stop
    +>16:15:39 AutoIT3.exe ended.rc:0
    >Exit code: 0    Time: 2.105


    Wenn ich dann in dem Hauptscript die admin.au3 wieder rausnehme, sowie auch den Funktionsaufruf, dann lässt sich die Hauptanwendung wieder ganz normal starten.
    Ich check das gerda echt nicht

    Gruss und Danke

    Hassan

  • In die Include-Datei gehört ganz sicher schon mal keine "while 1 - wend"-Schleife. Nur Variablen-Deklarationen & Funktionen.

    Du must Dir das vorstellen, das die per "#Include" eingefügte Datei,einfach in dein Hauptscript kopiert wird. Stell die vor, was die While-Wend-Schleife an der Stelle verursacht !

    Die in der Schleife behandelten Abfragen musst Du mit ins Hauptscript oder in die Funktion packen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Ich kann dir auch sagen warum "nix" passiert, oder viel mehr warum etwas passiert, das du sicher nicht beabsichtigst.

    In der admin.au3 machst du Folgendes:

    Du deklarierst die Variable "$GUI_Einstellungen_Daten_SS" ganz am Anfang global, ohne Wertzuweisung, was gleichbedeutend mit der Wertzuweisung 0 ist.
    Das machst du deshalb, weil du die GUI erst in der Funktion erstellst, deine while Schleife aber ausserhalb der Funktion laufen soll... warum auch immer.

    Nun ergibt sich ein Problem. Die While Schleife wird abgearbeitet, die deklarierte Variable, welche du im case abfragst wurde noch nicht mit einer controlid überschrieben, weil die gui noch garnicht erstellt ist. Somit hat die Variable nachwievor den Wert 0. Guigetmsg returned aber immer 0, wenn es kein GUI event gab. Da das zu 99% der Laufzeit der Fall ist sollte man tunlichst vermeiden einer Variable den Wert 0 zuzuweisen, welche mit dem Ergebnis von guigetmsg verglichen wird. Das Ergebnis ist, dass der case erfüllt ist und folgerichtig dein exit ausgeführt wird. Besser sehen kannst du das indem du statt exit ein consolewrite in den case einfügst, dann schaut dein consolelog nämlich so aus:


    Code
    +>17:09:19 AU3Check ended.rc:0
    >Running:(3.3.6.1):C:\Program Files (x86)\AutoIt3\autoit3_x64.exe "C:\Users\****\Desktop\autoit\Neuer Ordner\main.AU3"    
    case erfüllt
    case erfüllt
    case erfüllt
    case erfüllt
    ...


    Aber selbst wenn du das Problem umgehst, z.B. einen negativen Wert bei der Deklaration zuweist wird nicht das passieren was du dir erhoffst, denn wenn du das Hauptscript ausführst wird zuerst alles was global ist, also ausserhalb von Funktionen existiert ausgeführt. Da du die admin.au3 inkludierst bevor der Rest deines Hauptscriptes folge befindet sich die globale while schleife der admin.au3 vor deiner globalen Schleife der main.au3. Dein Script bleibt also in der while Schleife der admin.au3 hängen und kommt erst garnicht zur Ausführung des globalen codes der main.au3. Resultat Endlosschleife.


    Deswegen auch mein Hinweis darauf, dass man in include Dateien auf globale Dinge verzichten sollte, im Höchstfall Variablen oder Konstanten global deklarieren sollte (Benennung muss eindeutig sein, damit es nicht zu Problemen mit Variablen im Hauptscript kommt), aber ganz sicher keinen ausführbaren code und erst recht keine Schleifen.

    Sieh includes nicht als Einbettung von seperaten Programmen, sondern als Funktionssammlungen an.

    Da du hier scheinbar einen PW Schutz in dein Admin Programm einbauen willst wäre es denke ich eher sinnvoller den PW Schutz als include zu gestalten und in die admin.au3 oder deine anderen Programme, welche auf gleichem Wege geschützt werden sollen einzubauen.

  • @Hassan,
    in Deine admin.au3 habe ich Dir mal Arrays für die Labels eingebaut, dass geht auch analog mit den Inputs so. 8)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    Global $var_sz_link1, $var_sz_link2, $var_sz_link3, $var_sz_link4, $var_f_link1, $var_f_link2, $var_f_link3, $var_f_link4; Linke Ränder
    Global $var_labellaengeInput, $var_top1, $var_top2, $var_top3, $var_top4, $var_top5, $var_top6, $var_top7, $var_top8, $var_top9; Obere Ränder
    Global $var_startzeit_sz_wt, $var_endzeit_sz_wt, $var_startzeit_sz_we, $var_endzeit_sz_we, $var_maxzeit_sz_wt, $var_maxzeit_sz_we, $var_startzeit_f, $var_endzeit_f, $var_maxzeit_f, $var_bonuszeit; Zeiten
    Global $var_spaltendifferenz1, $var_labellaengeInput, $var_labellaengeLabel; Differenzabstände
    Global $GUI_Einstellungen, $GUI_Einstellungen_Daten, $GUI_Einstellungen_Daten_SS
    Global $Label1, $Label2, $Label3, $Label4, $Label5, $Label6, $Label7, $Label8, $Label9, $Label10, $Label11, $Label12, $Label13, $Label14, $Label15, $Label16, $Label17, $Label18, $Label19, $Label20, $Label21, $Label22, $Label23
    Global $Group1, $Group2, $Group3, $Checkbox1

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

    $var_sz_link1 = 60
    $var_sz_link2 = 140
    $var_sz_link3 = 200
    $var_sz_link4 = 260

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

    $var_f_link1 = 400
    $var_f_link2 = 480
    $var_f_link3 = 540
    $var_f_link4 = 600

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

    $var_labellaengeInput = 45
    $var_labellaengeLabel = 60
    $var_spaltendifferenz1 = 30

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

    $var_top1 = 100
    $var_top2 = $var_top1 + $var_spaltendifferenz1
    $var_top3 = $var_top2 + $var_spaltendifferenz1
    $var_top4 = $var_top3 + $var_spaltendifferenz1
    $var_top5 = $var_top4 + $var_spaltendifferenz1
    $var_top6 = $var_top5 + $var_spaltendifferenz1
    $var_top7 = $var_top6 + $var_spaltendifferenz1
    $var_top8 = $var_top7 + 50
    $var_top9 = $var_top1 - $var_spaltendifferenz1

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

    $var_startzeit_sz_wt = "11:00"
    $var_endzeit_sz_wt = "19:30"
    $var_startzeit_sz_we = "08:00"
    $var_endzeit_sz_we = "23:30"
    $var_maxzeit_sz_wt = 30
    $var_maxzeit_sz_we = 60

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

    $var_startzeit_f = "07:00"
    $var_endzeit_f = "23:30"
    $var_maxzeit_f = 60

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

    $var_bonuszeit = 15

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

    ;~ _Admin()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $GUI_Einstellungen_Daten_SS
    ExitLoop
    EndSwitch
    WEnd

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

    Func _Admin()

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

    $GUI_Einstellungen = GUICreate("Einstellungen", 700, 370, -1, -1)
    $GUI_Einstellungen_Daten = GUICtrlCreateMenu("Daten")
    $GUI_Einstellungen_Daten_SS = GUICtrlCreateMenuItem("Speichern und Schließen", $GUI_Einstellungen_Daten)

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

    $Label1 = GUICtrlCreateLabel("Ferienmodus aktiv", 20, 16, 90, 17)
    $Group1 = GUICtrlCreateGroup("Schulzeit", 20, 50, 320, 270)
    GUICtrlSetBkColor($Group1, 0xFFCCFF) ; Rosa

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

    Local $alblWTli[7], $alblWTag[7] = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag"]
    For $i = 0 To 6
    $alblWTli[$i] = GUICtrlCreateLabel($alblWTag[$i], 60, 100 + $i * 30, 60, 17)
    Next

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

    Local $alblOvli[3], $alblOver[3] = ["Start", "Ende", "Maximal"]
    For $i = 0 To 2
    $alblOvli[$i] = GUICtrlCreateLabel($alblOver[$i], 140 + $i * 60, 70, 60, 17)
    Next

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

    Global $Input1 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top1, $var_labellaengeInput, 21)
    Global $Input2 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top1, $var_labellaengeInput, 21)
    Global $Input3 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top1, $var_labellaengeInput, 21)
    Global $Input4 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top2, $var_labellaengeInput, 21)
    Global $Input5 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top2, $var_labellaengeInput, 21)
    Global $Input6 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top2, $var_labellaengeInput, 21)
    Global $Input7 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top3, $var_labellaengeInput, 21)
    Global $Input8 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top3, $var_labellaengeInput, 21)
    Global $Input9 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top3, $var_labellaengeInput, 21)
    Global $Input10 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top4, $var_labellaengeInput, 21)
    Global $Input11 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top4, $var_labellaengeInput, 21)
    Global $Input12 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top4, $var_labellaengeInput, 21)
    Global $Input13 = GUICtrlCreateInput($var_startzeit_sz_wt, $var_sz_link2, $var_top5, $var_labellaengeInput, 21)
    Global $Input14 = GUICtrlCreateInput($var_endzeit_sz_wt, $var_sz_link3, $var_top5, $var_labellaengeInput, 21)
    Global $Input15 = GUICtrlCreateInput($var_maxzeit_sz_wt, $var_sz_link4, $var_top5, $var_labellaengeInput, 21)
    Global $Input16 = GUICtrlCreateInput($var_startzeit_sz_we, $var_sz_link2, $var_top6, $var_labellaengeInput, 21)
    Global $Input17 = GUICtrlCreateInput($var_endzeit_sz_we, $var_sz_link3, $var_top6, $var_labellaengeInput, 21)
    Global $Input18 = GUICtrlCreateInput($var_maxzeit_sz_we, $var_sz_link4, $var_top6, $var_labellaengeInput, 21)
    Global $Input19 = GUICtrlCreateInput($var_startzeit_sz_we, $var_sz_link2, $var_top7, $var_labellaengeInput, 21)
    Global $Input20 = GUICtrlCreateInput($var_endzeit_sz_we, $var_sz_link3, $var_top7, $var_labellaengeInput, 21)
    Global $Input21 = GUICtrlCreateInput($var_maxzeit_sz_we, $var_sz_link4, $var_top7, $var_labellaengeInput, 21)

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

    $Label9 = GUICtrlCreateLabel("Bonus Zeit in Minuten: ", 360, 16, 110, 17)
    Global $Input22 = GUICtrlCreateInput($var_bonuszeit, 480, 16, 25, 17)
    GUICtrlSetBkColor($Input22, 0x00ff00) ; Grün

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

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group2 = GUICtrlCreateGroup("Ferien", 360, 50, 320, 270)
    GUICtrlSetBkColor($Group2, 0xCCFFFF) ; Mintgrün

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

    Local $alblWTre[7]
    For $i = 0 To 6
    $alblWTre[$i] = GUICtrlCreateLabel($alblWTag[$i], 400, 100 + $i * 30, 60, 17)
    Next

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

    Local $alblOvre[3]
    For $i = 0 To 2
    $alblOvre[$i] = GUICtrlCreateLabel($alblOver[$i], 480 + $i * 60, 70, 60, 17)
    Next

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

    Global $Input23 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top1, $var_labellaengeInput, 21)
    Global $Input24 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top1, $var_labellaengeInput, 21)
    Global $Input25 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top1, $var_labellaengeInput, 21)
    Global $Input26 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top2, $var_labellaengeInput, 21)
    Global $Input27 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top2, $var_labellaengeInput, 21)
    Global $Input28 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top2, $var_labellaengeInput, 21)
    Global $Input29 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top3, $var_labellaengeInput, 21)
    Global $Input30 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top3, $var_labellaengeInput, 21)
    Global $Input31 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top3, $var_labellaengeInput, 21)
    Global $Input32 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top4, $var_labellaengeInput, 21)
    Global $Input33 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top4, $var_labellaengeInput, 21)
    Global $Input34 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top4, $var_labellaengeInput, 21)
    Global $Input35 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top5, $var_labellaengeInput, 21)
    Global $Input36 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top5, $var_labellaengeInput, 21)
    Global $Input37 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top5, $var_labellaengeInput, 21)
    Global $Input38 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top6, $var_labellaengeInput, 21)
    Global $Input39 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top6, $var_labellaengeInput, 21)
    Global $Input40 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top6, $var_labellaengeInput, 21)
    Global $Input41 = GUICtrlCreateInput($var_startzeit_f, $var_f_link2, $var_top7, $var_labellaengeInput, 21)
    Global $Input42 = GUICtrlCreateInput($var_endzeit_f, $var_f_link3, $var_top7, $var_labellaengeInput, 21)
    Global $Input43 = GUICtrlCreateInput($var_maxzeit_f, $var_f_link4, $var_top7, $var_labellaengeInput, 21)

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

    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 120, 16, 17, 17)
    GUISetState(@SW_SHOW)

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

    EndFunc ;==>_Admin
    ; Ende

    [/autoit]