Beiträge von elcojon

    Hey jz mal Butter bei die Fische... Fakt ist: Fehler wurde Nicht richtig erkannt. Für Case $6 MUSSTE* keine deklaration erfolgen. das script ist erst am compiler gecrasht - darum gehts mir


    *(Decalr.ErrorReport by MustDeclareVars)

    In C ist das so? Das will ich gerne sehen o.O Ich würde behaupte das ist in C nicht so, da ist alles noch viel strenger ... ich kann mich nicht daran errinnern, dass das in C so sei. Wenn du da ein Beispiel hast darfst du mir das gerne mal zeigen bitte.


    ... dass man immer UNTER einer function weiter coden muss wenn von dort der aufruf erfolgr ?(


    und zu dem switch.. nein.. aber ohne den davor aufgerufenen case ist das ganze nicht viel mehr... außerdem waren da """""""" ^^

    zu 1. ja okay hab ich nich ausprobiert aber in c ist das ja so...
    zu 2. ja und genau das gleiche ist bei switch.. switch entscheidet welche "innere Funktion" aufgerufen wird (via wahrheitswert der mittels den cases festgelegt wird) bei select würde ich es ja noch verstehen weil dort mehrere zutreffen können und sie nacheinander abgearbeitet werden aber bei switch? naja.. problem ist jz auf jedenfall bekannt und man weiß jz woran man ist :rolleyes:

    Wenn $a lediglich in einem anderen Case deklariert wird, dann ist das kein Fehler von Au3Check sondern schlicht korrekt.
    Mit MustDeclareVars soll sichergestellt werden, dass Variablen erst nach einer expliziten Deklaration initialisiert werden dürfen.
    Wenn die Deklaration aber in einem Case steht ist die Deklaration in einem anderen Case nicht sichergestellt (weil das Case mit der Deklaration unter Umständen nie aufgerufen wird).
    Die Deklaration muss also außerhalb des Switchs passieren wenn eine Variable Case-Übergreifende verwendet wird. Oder in jedem Case wo sie verwendet wird einzeln.


    Für Fälle in denen die Struktur wirklich mal zu komplex für Au3Check ist, nimmt man hingegen #forceref.



    stimmt fast... bestimme ich eine lokale in einer func. und code unter ihr weiter meckert mustdecare check auch rum... und sie ist theoretisch definiert... jedoch (praktisch) nicht zwingend (mustdecalre) ...

    OMG!! :party: okay en kolege hats gepackt ^^ schmerzhafter fail... Es ligt dem ganzen wohl ein Fehler in der Struktur der Au3Check, bzw. was sich auch immer um den check des mustdeclar kümmert, vor.


    $a war weiter oben in einem anderes Case bereits deklariert.
    in case $6 aber noch nicht... der check läft drüber und sieht ein local $a in der while loop und alles is gut... bin der compiler bzw interpreter selbst dran geht :cursing::cursing:


    Lösung ;)




    Trotzdem ein Dank an alle die sich ein kopf gemacht haben :thumbup:


    gibts iwo so ne art sphotline für autoit? :D das könnte man ja im nächsten rl fixen :whistling:


    And Now.. Rock'n'Roll :rock::love:

    * nur die Variablen $___MLUDF_* sind Global bzw Global Statics ... und alle vars im und um die gui sind nur zum test gedacht..


    Ich hab das gefühl dass es in dem funktionsheader liegt... thoretischw erden alle enthaltenen Variablen/Parameter Lokal für diese einzige Funktion deklariert.
    [[ _INIREAD($s_PATH = Default, $f_UseEncryptedINI = Default) ]] aber scheind als würde das must decar nicht reichen ://


    Ich bin mir nicht so sicher, ob das sinnvoll ist einfach alle Variablen global zu deklarieren, wenn er denn schon MustDeclareVars benutzt...
    Hast du schon überprüft, ob irgendeine Variable in deiner Funktion, zum Zeitpunkt des Aufrufens, noch nicht deklariert ist? Möglicherweise ist das einfach nur eine seltsame Zeilenangabe von Au3Check


    Ja generell schon...


    btw der kopf (Steht da so nix beautified o.ä.):


    Hallöchen alle ihr jungs und mädchen (;


    vielleicht kann mir jmd helfen:
    Idee Live MultiLanguage Sprachumschaltung
    kleines Extra damit nicht irgendwer an den Sprachen rumfummelt.. encryptchen.


    es ist eigenlich noch nichts ganz fertig darum verzeit mir.. umständliche codingwege ..


    Jz das eigenliche Problem: (FEHLER auf grund von Opt("MustDeclareVars", 1) => bei 0 ist alles okay..)


    der Aufruf :


    Die Function



    Vielen dank Ich hoffe ich hab jetzt auf die schnelle nicht allzuviel vergessen bzw fehler gemacht :thumbsup::thumbsup:
    :)
    ElCoón ;-)

    es (gab/gibt) auch ein Scite shortcard leider find ich ihn nicht mehr... irgendetwas mit speech oder so


    #EDIT:


    einfach 'say' eingeben und mit einem 'Space' abschließen :P
    etwas billig aber mit ein paar einstellungen ganz verträglich :whistling:

    teste das mal übers Terminal ;)


    RE_name=>nslookup <IP>


    RE_user=>nbtstat -A <IP>


    #EDIT: #1
    Hoppla.. Bin gerade ständig auf Linux unterwegs, aber guckmal soetwas in der Art gibt es bestimmt auch für Windows :thumbsup:


    #EDIT: #2
    Beide Befehle existieren auch in Windows :thumbup: einfach mal cmd ausführen, einfügen und -A mit -? ersetzen :party:

    bin nich so der changelog suchti :D hm ja aber das ist eine ganz andere art in die ich mich fast komplett einarbeiten müsste...


    Da du mich jz wieder mit der @error Anomalie drauf gehoben hast... das "Problem" liegt eigenlich garnicht als solches vor.


    vorne weg: Probelm gelöst => _ArraySearch () statt der Binary Alternative.
    Im Test Klappts... jz muss es sich nurnoch in der Praxis beweisen :P



    Das Problem liegt im Unterschied: _ArrayBinarySearch() VS. _ArraySearch ()
    _ArrayBinarySearch sucht mittels lexikographischem Muster(desswegen ja auch das anfängliche _arraySort)


    die "Fehlerhafte"-Zeile (z116@\Include\Array.au3):
    If $avArray[$iStart] > $vValue Or $avArray[$iEnd] < $vValue Then Return SetError(2, 0, -1)
    ... oder im Spoiler z14:


    Wir vergleichen mit den Operatoren "<" & ">"
    Diese arbeiten auf lexikographischer Ebene


    //Wer sich mal die mühe machen will vergleicht die 2 Funktionen der arrayUDF (au3v3381)




    //\// Neue Suche:
    $iSearchResult = _ArraySearch($aTempCleaned_RAW, $aTemp[$i][0], 0, 0, 1, 2)

    Zur Frage :thumbsup: : Warum "killt", wie du es so schöhn beschrieben hast, Binarysearch nicht die doppelten einträge?!

    Ladet euch das Script einfach runter, und Testet es selbst... es klappt einfach nich?! -______-


    PS:
    es sind im Endeffekt 9Zeilen Code...
    zum Anzeigen:


    über das
    EndFunc ;==>__clearList
    schreibt ihr ein Return $aTempCleaned_RAW


    und etwa ca um zeile 80-82 steht
    __clearList($aTest)
    ersetzt das durch
    $a=__clearList($aTest)
    _arrayDisplay($a)
    und ihr bekommt die (eigenlich wiederholungsFreie Tabelle) angezeit

    Ok ich versteh jz auch dein ansatz ^^ aber... das ist zu groß aufgebaut.


    Zur Frage :thumbsup: : Warum "killt", wie du es so schöhn beschrieben hast, Binarysearch nicht die doppelten einträge?!


    Und jz nochmal kurz zum aufbau:


    Ausgangs Array =>>
    $aTemp[6][2] = [["127.0.0.1","Lokales System"],["127.0.0.1","localhost"],["10.0.0.1","Gateway"],["10.123.200.254","Router_1"],["192.168.10.1","DMZ denkt euch was aus :D"],["10.123.200.254","Router1"]]


    die Informationen sind also faktisch, durch einen delimiter, von der IP getrennt.
    Wie in dem noch beigefügten Script:
    #cs ====Tabelle sieht etwa so aus:====================================================


    ##########################################################
    ## 127.0.0.1 ___________# Lokales System _______________##
    ## 127.0.0.1 ___________# localhost ____________________##
    ## 10.0.0.1 ____________# Gateway ______________________##
    ## 10.123.200.254 ______# Router_1 _____________________##
    ## 192.168.10.1 ________# DMZ denkt euch was aus :D ____##
    ## 10.123.200.254 ______# Router1 ______________________##
    ##########################################################


    #ce ==================================================================================


    Die in der 2. Spalte befindliche Info lassen wir links liegen, wir arbeiten jetzt mit _arrayAdd (also rein 1Dimensional)
    Wir nehmen uns die oben abgebildete Tabelle (natürlich als array siehe "$aTemp[6][2] = [["127.0"...)


    und durchwandern sie mit einer For/Newxt schleife in Einzelnen Schritten:
    For $i=$iStartIndex To UBound($aTemp,1) - 1
    oder einfacher
    For $i=0 To UBound($aTemp) - 1 Step 1
    also von Anfang:0 bis variables ende (Arrayumfang-1, weil 0basieren!) Ubound($aTemp)-1


    (Jetzt erstellen wir ein 1 dimensionales Array names "$aTempCleaned_RAW" (weil arbeit mit _arrayAdd() nur 1ne Dim.) $aTempCleaned_RAW[1] +=> Ein Leeres Array benötigt IMMER min. 1 Eintrag (der leer is aber egal).. darum das..._RAW[1])


    Und nun nochmal zu dem Schleifen inhalt der das eigentliche Problem dastellt:
    _ArrayBinarySearch ($aTempCleaned_RAW,$aTemp[$i][0])
    Beim ersten durchlauf(also $i=0) nemhen wir also aus der Tabelle (oben) die Zeile 0 (da $i=0) und auch die erste Spalte(0, da ..."[$i][0])", mit der IP)
    => also wir haben jz schlicht die Aller 1. IP-Adresse.


    Nun schauen wir ob diese (1.IP-Adr.) in dem eben angelegen Array sind (natürlich jetzt noch nicht, aber später ist es möglich dass diese IP schon in der liste steht)
    Dies tun wir mit _ArrayBinarySearch($a_Such_In_Mir, $s_Was_du_auch_immer_suchen_moechtest)


    Und WENN ein Fehler Auftritt (Rückgabewert also == (-1)) also der Eintrag NICHT gefunden wird, dann fügen wir ihn mittels _arrayadd hinzu.


    Und so testen wir jede IP der ausgangsTabelle.



    und zum Schluss biitte, guckt euch das angefügt Script an...


    :)

    Hallo


    auf den wunsch von president chip der Thread zur frage:


    Es geht um eine zusammenführung von div. IP-Listen (mitbeschreibung)
    1. Dim. = IP; 2. Dim. = beschreibung (kann variieren, daher auch kein _ArrayUnique möglich)


    Nun soll eine Neue Liste (array) erstellt werden in die nur einträge hinzugefügt werden, wenn sie nicht schon vorhanden sind.


    Wie oben beschrieben wird ein 2d-array angeliefert, ein neues 1d erstellt, und der rest in Codeform :P



    _ArraySort ($aTemp)


    Local $aTempCleaned_RAW[1]=["IPs"]


    For $i=$iStartIndex To UBound($aTemp,1) - 1 ; führ den block für jede IP-Adr. in der Liste ($aTemp) aus.


    $iSearchResult=_ArrayBinarySearch ($aTempCleaned_RAW,$aTemp[$i][0]) ; überprüft ob der Momentane Eintrag ($aTemp[$i][0], 0=Ip, 1=Info) schon in der neuen Liste ($aTempCleaned_RAW) vorhanden ist.


    ;_ArrayDisplay ($aTempCleaned_RAW,"$aTempCleaned_RAW") ; nur zum test ob es echt so logisch daneben läuft ^^


    If $iSearchResult== (-1) Then _ArrayAdd ($aTempCleaned_RAW,$aTemp[$i][0]) ; Beim Fehler auf -1 und @error - Wenn FEHLER dann Nicht Vorhanden =>> also eintrag hinzufügen.


    Next ; schließt bekanntlich den block




    anschließend würden die IPs mit der orginalliste verglichen und die informationen in die 2. dim. ergänzt aber das dürfte erstmal egal sein :)


    PS: BSP Liste:
    $aTemp[6][2] = [["127.0.0.1","Lokales System"],["127.0.0.1","localhost"],["10.0.0.1","Gateway"],["10.123.200.254","Router_1"],["192.168.10.1","DMZ denkt euch was aus :D"],["10.123.200.254","Router1"]]



    Hoffe es versteht jmd ^^ und kann mir auch noch weiterhelfen :whistling: :thumbsup:

    Okeee :D
    es geht darum das ein login auf einer testseite immer abschmirt wenn es anfragen von speziellen IPs bekommt... also länder bezogen. jz is erstmal die frage gewesen warum... und mir wurde angetragen doch erstmal fest zustellen ob es immer z.b. länderbezogen ist, oder ein bereich oder ein provider.


    leider besitze ich nich die befugnis die Seite zu publizieren :/