Brute-Force - Klammerfehler finden 2.0

  • Mein lieber Kollege DarthXela : hat hier schon eine passend Methode beschrieben, Klammerfehler zu beseitigen. Solltet ihr einen haben, versucht die bitte erst, das Tutorial ;)


    Wir fangen an, indem wir nach der ersten Funktion eine Klammer-zu schreiben. Dann versuchen wir noch einmal zu compilen und gucken, ob ein neuer Error „unexspected }“ kommt. Wenn nein, liegt der Klammerfehler in der Funktion über unsrer neuen Klammer. Wenn ja, schieben wir sie eine Funktion weiter runter. Sind wir ganz unten angekommen und haben immer noch einen Klammerfehler, wiederholen wir alles mit 2 Klammern.


    Schematisches Beispiel:
    funktion1()
    {
    funktion3();
    }


    funktion2()
    {
    do(something);
    ) // Fehler


    funktion3()
    {
    do(something, other);
    }

    funktion1()
    {
    funktion3();
    }


    }// Error, unexspected }


    funktion2()
    {
    do(something);
    ) // Fehler


    funktion3()
    {
    do(something, other);
    }

    funktion1()
    {
    funktion3();
    }


    funktion2()
    {
    do(something);
    ) // Fehler


    } // Kein „unexspected }“-Error,, Fehler liegt in funktion2


    funktion3()
    {
    do(something, other);
    }


    Das ganze kann sehr zeitaufwendig werden, deshalb ist es so etwas wie eine Notlösung :)
    Ich habe damit 2 Klammerfehler in etwa 45 Minuten entfernt, clruler :


    Feedback plz


    Tion

  • Gibt es nicht sowas wie ein Programm das Klammerfehler findet weil das hilft mir nicht wirklich weiter ich weiß ja wie man klammern setzt aber wenn der beschissene Pawn Compiler abschmiert weiß ich auch nicht mehr weiter auch nachdem ich alles in Notepad++ überprüft habe o.O

  • wenn der Compiler abstürtzt fehlt meist ein }


    naja dafür ein Programm zuschreiben ist schwer, das einzigste was dieses Programm machen könnte wäre dir sagen in welchen Publkic/welcher Funktion ein Klammer fehler ist.

  • ja wow ich benutze ja notepad ++ finde den Fehler trotzdem nicht habe alles kontrolliert was ich Heute bisher gemacht habe und keinen fehler gefunden -.- ich weiß nur das ich 219 { klammern und 219 } klammern habe


  • dann mach das am besten mal, einfach Funktionen und Publics auskommentieren an dennen du zuletzt gearbeitet hast, und schau

  • also nach jedem scheiß was ich scripte auch wenn ich danach weiter mache compile ich dann weiß aha da ist ein fehler und besser den aus :)
    so kommt sowas nicht zustande <3

    Da hast du recht, aber das hier ist die Stufed der Behebung, nicht der Vorbeugung ;)


    Sonst... Danke für das Feedback :3

  • Folgendes ist eventuell auch ganz hilfreich, wobei es sich hier nicht um einen Klammerfehler handelt.


    219er-Warnings (hier glaubt man es wäre ein Klammerfehler, was aber nicht der Fall ist):

    Code
    1. warning 219: local variable "XYZ" shadows a variable at a preceding level
    2. warning 219: local variable "XYZ" shadows a variable at a preceding level
    3. warning 219: local variable "XYZ" shadows a variable at a preceding level
    4. warning 219: local variable "XYZ" shadows a variable at a preceding level
    5. warning 219: local variable "XYZ" shadows a variable at a preceding level
    6. warning 219: local variable "XYZ" shadows a variable at a preceding level
    7. warning 219: local variable "XYZ" shadows a variable at a preceding level
    8. warning 219: local variable "XYZ" shadows a variable at a preceding level
    9. warning 219: local variable "XYZ" shadows a variable at a preceding level


    Fehler (Beispiel-Funktion):
    stock bool:IsOneEqualOne()
    {
    if (1 == 1) {
    return true;
    }
    return false,
    }
    Hier wurde nach dem "false" statt einem Semikolon ein Komma geschrieben, was übrigens öfters mal vorkommt, da der Kopf schneller arbeitet und die Hand dann manchmal einfach nicht mitkommt.



    Lösung:
    Man sucht mithilfe folgendem regulären Ausdruck im Script nach dem Fehler. Komischerweise funktioniert das nicht mit Pawno. Ihr müsst also kurzfristig auf einen anderen Editor wie Notepad oder auch Sublime umsteigen.

    Code
    1. ,\s*\}
  • der Warning sagt nicht das aus was du meinst.


    Klammerfehler sollte man auch nicht an 26 Erros o.ä. festmachen, das ist nämlich die maximale Anzahl an Fehler die der Compiler anzeigt bzw, anzeigen kann.
    Der "Warning" bzw. den Fehler den du eingebaut hast ist dieser:
    "error 001: expected token: ";", but found "XYZ""


    dieser Warning:
    local variable "XYZ" shadows a variable at a preceding level


    entsteht folgendermaßen


    public OnGameModeInit()
    {
    new var, bool:boolvar; <- lokal, aber überall gültig
    if(boolvar == true)
    {
    new var = 2; <- ebenfalls lokal, aber sie ist in einem untergeordnetem Level und auch schon deklariert - ergo Fehler/Warning, der Compiler weiß nicht welche Variable du wirklich meinst.
    }
    }

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski