Scite Fehlermeldungen ohne ende

  • Moin

    erstaml hier ein Testscript

    Spoiler anzeigen
    [autoit]

    HotKeySet("{ESC}","_exit")
    HotKeySet("t","test")

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

    While 1
    Sleep(100)
    WEnd

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

    Func test()
    Global $Test = 10
    MsgBox(0,"",test2())
    EndFunc

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

    Func test2()
    Return $Test*2
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]


    und hier die Fehlermeldung dazu

    Spoiler anzeigen
    Code
    C:\Users\Matze\Documents\Alle AutiIT-Test\Formel 1\test.au3(14,14) : WARNING: $Test: possibly used before declaration.
    	Return $Test*
    	~~~~~~~~~~~~^
    C:\Users\Matze\Documents\Alle AutiIT-Test\Formel 1\test.au3(9,19) : WARNING: $Test: declared global in function only. Prefer top of file.
    	Global $Test = 10
    	~~~~~~~~~~~~~~~~~^
    C:\Users\Matze\Documents\Alle AutiIT-Test\Formel 1\test.au3 - 0 error(s), 2 warning(s)

    wieso bekomme ich hier solche Fehlermeldungen, obwohl die Variable überhaupt noch nicht benutzt wurde?
    Außerdem geht das gaze soweit, dass ich in einem anderen etwas längeren Script das hier bekomm.

    Spoiler anzeigen

    Das Scipt läuft natürlich, da alle Variablen vor der Benutzung Registriert werden, jedoch ist es sehr ärgerlich solch viele unnötigen Warnings zu erhalten, denn wenn an wirklich ein Fehler entsteht muss ich 50 mal F4 drücken bis ich zu dem eingentlichen Fehler komm.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Globale Variablen musst Du auch Global (im Hauptprogramm) deklarieren und nicht in einer Funktion.
    Das sollen Dir diese Warnmeldungen sagen.


    Seit wann muss man das? Naja supi dann muss ich jetzt ein 2000 zeilen Code, indem ich Functionen habe, die nur einmal aufgerufen werden(direkt beim start) und da die ganzen Varablen gesetzt werden nach oben packen?
    sowas gabs beim alten Scite aber noch nicht, Kann ich das irgendwie abschalten?

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Natürlich kann man Variablen für den globalen Gültigkeitsbereich in einer Funktion deklarieren. Ich halte es aber für einen schlechten Programmierstil. Globale Variablen gehören an den Skriptanfang und lokale Variablen gehören in die Funktion.


    Was passieriert beim Funktionsaufruf von Test2() bevor über den Aufruf der Funktion Test() die Varialbe $Test überhaupt deklariert wurde? Die Funktion liefert Dir ein nicht erwünschtest Ergebnis zurück. Bei Deinem Beispiel würde ich ein Parameter an die Funktion übergeben, mit diesem Parameter rechnen und mir dann das Ergebnis zurückgeben lassen.

  • Natürlich kann man Variablen für den globalen Gültigkeitsbereich in einer Funktion deklarieren. Ich halte es aber für einen schlechten Programmierstil. Globale Variablen gehören an den Skriptanfang und lokale Variablen gehören in die Funktion.


    Was passieriert beim Funktionsaufruf von Test2() bevor über den Aufruf der Funktion Test() die Varialbe $Test überhaupt deklariert wurde? Die Funktion liefert Dir ein nicht erwünschtest Ergebnis zurück. Bei Deinem Beispiel würde ich ein Parameter an die Funktion übergeben, mit diesem Parameter rechnen und mir dann das Ergebnis zurückgeben lassen.

    mein Gott wie wär es mit genauem Lesen?? ich habe gesagt , das ist ein Bsp. und die Funktion Test2 wird nie in keinstem fall ohne die Funktion Test aufgerufen. also stellt sich dir frage gar nicht

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • @Darter

    1. In Deinem Beitrag erwähnst Du mit keiner Silbe, das Wort "Beispiel"

    2. Du solltest ebenfalls meinen Beitrag aufmerksam lesen: "... Bei Deinem Beispiel würde ich ein Parameter an die Funktion übergeben ..."

    Vielleicht fühlst Du Dich persönlich angegriffen, weil ich diesen Progammierstil als schlecht befinde. Die Verwendung von globalen Variablen ist sehr bequem, weil diese im ganzen Programm sichtbar sind. Aber dadurch werden sie leicht zu Fehlerquelle, wenn man sie zum Beispiel versehentlich für unterschiedliche Zwecke benutzt. Bis auf ganz wenige Ausnahmen findest Du in meinen Quelltexten eine globale Variable.