Compiler Crasht - Zeile zu lang?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Es gibt Neuigkeiten! Ab sofort könnt ihr dem Donators Club auf Lebenszeit beitreten.
    Weitere Infos im Thema Donator's Club ab heute wieder verfügbar!

    • Compiler Crasht - Zeile zu lang?

      Hallo ihr Lieben,

      ja das Thema ist eigentlich relativ alt, dennoch haben viele Menschen Probleme damit und es gibt immer wieder falsche Lösungsansätze.

      Also schauen wir uns das ganze doch mal ein wenig an.

      Was ist das Problem?
      Wenn man eine zu lange Zeile in Pawno erstellt und diese compilt, dann kann es passieren, dass keine Fehlermeldung ausgegeben wird und der Compiler einfach crasht.
      Das ist ein Compiler Bug, es gibt einen Compiler Fix, aber man kann dies natürlich auch skript-technisch lösen.

      Das Problem tritt auf, wenn 512 Zeichen in einer Zeile überschritten werden.

      Wie kann man das Problem lösen?
      Meistens hat man einen langen Text in dieser Zeile, zum Beispiel:

      PAWN-Quellcode

      1. ShowPlayerDialog(playerid,0,DIALOG_STYLE_TEST,"Hallo","Dies ist ein sehr sehr sehr sehr langer Text!","Ok","");


      Viele denken nun, man kann folgendes tun:

      PAWN-Quellcode

      1. ShowPlayerDialog(playerid,0,DIALOG_STYLE_TEST,"Hallo","Dies ist ein sehr sehr \
      2. sehr sehr langer Text!","Ok","");


      Das ist FALSCH!

      Für den Compiler ist das immer noch eine Zeile. (Alles was zwischen den " steht, gilt für den Compiler als EINS.)

      Man könnte folgendes tun:

      PAWN-Quellcode

      1. ShowPlayerDialog(playerid,0,DIALOG_STYLE_TEST,"Hallo","Dies ist ein sehr sehr sehr sehr langer Text!","Ok","");


      Das wären für den Compiler jetzt 3 Zeilen und nicht mehr eine.
      Sieht aber halt kacke aus, ist unübersichtlich und meistens immer noch zu lang xD

      Deshalb gilt Funktionen zu nutzen, die den String zusammenführen:

      PAWN-Quellcode

      1. new string[64];
      2. strcat(string, "Dies ist ein sehr sehr ");
      3. strcat(string, "sehr sehr langer Text!");
      4. ShowPlayerDialog(playerid,0,DIALOG_STYLE_TEST,"Hallo",string,"Ok","");


      //Edit:

      Ja, wenn man nun format nutzt, kann man das auch einfach aufteilen:

      PAWN-Quellcode

      1. new string[256];
      2. format(string,sizeof(string),"Dies ist der erste Teil mit ein Paar (%s) Variablen (%f).",x,y);
      3. format(string,sizeof(string),"%s Nun hängen wir noch was hinten dran! (%s)",string,z);

      Kurze Erklärung:
      In der 3. Zeile steht man Anfang ein %s dies ist wichtig, da gesagt wird, dass der String aus dem vorherigen format nun davor gehangen wird.
      (Deshalb steht auch hinten vor dem z nochmal das string).

      Schlusswort
      Ja, vielen ist das Problem bekannt und ein alter Hut, aber wollte nur kurz für alle Anfänger was dazu schreiben.

      Viel Spaß noch beim Skripten! :D


      Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Kaliber ()

    • Kaliber schrieb:

      Wie kann man das Problem lösen?
      In dem man einen Compiler nutzt, der das Problem nicht hat.

      github.com/pawn-lang/compiler/releases

      Alternativ sampctl benutzen in Verbindung mit VS Code
      "Bevor ich mir Informationen aus der "Bild" hole,
      werde ich anfangen, Wahlergebnisse danach vorauszusagen,
      neben welchen Busch unsere Katze gepinkelt hat."
      Margarete Stokowski
    • Akino Kiritani schrieb:

      In dem man einen Compiler nutzt, der das Problem nicht hat.
      ...hatte ich ja angesprochen:

      Kaliber schrieb:

      Das ist ein Compiler Bug, es gibt einen Compiler Fix, aber man kann dies natürlich auch skript-technisch lösen.
      Viele wollen halt keinen anderen Compiler verwenden.
      Deshalb nochmal die Erklärung wie man es alternativ löst.


      Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
    • Kaliber schrieb:

      Viele wollen halt keinen anderen Compiler verwenden.
      Dieses Argument ist einfach dumm, tut mir Leid.

      Woher möchtest du das eigentlich wissen ?

      Bequemlichkeit ? Halte ich für Unsinn.
      Eher Unwissenheit, darüber das es dieses Projekt gibt das auch neue Features implementiert wie bspw. 4 Dimensionale Arrays.

      Kaliber schrieb:

      ...hatte ich ja angesprochen:
      Du redest von einem Compiler Fix, verlinkst ihn aber nicht sondern verweißt darauf, dass man es Scripttechnisch lösen kann, was nicht nur aufwendiger ist, sondern auch noch Zeit kostet ?
      Richtig gutes Zeug °L°
      "Bevor ich mir Informationen aus der "Bild" hole,
      werde ich anfangen, Wahlergebnisse danach vorauszusagen,
      neben welchen Busch unsere Katze gepinkelt hat."
      Margarete Stokowski
    • Akino Kiritani schrieb:

      Eher Unwissenheit, darüber das es dieses Projekt gibt das auch neue Features implementiert wie bspw. 4 Dimensionale Arrays.
      ...wenn ich dieses Projekt nicht kennen würde...hätte ich es ja wohl kaum angesprochen...#Logic

      Verstehe jetzt diesen Aggro-Front auch gar nicht.

      Ich habe es nicht verlinkt, weil 1x suchen ja genügt, aber finde es ja gut, dass du es verlinkt hast.

      Ja es gibt viele Leute, besonders Neulinge, die jetzt vielleicht nicht den neusten und coolsten Shit haben wollen, sondern nur ihr Zeug zum Laufen bekommen wollen.

      Für diese Leute ist das gedacht.

      Jeder der das ganze Zeug nutzt, hat ja auch erst gar nicht diese Probleme und kommt auf diesen Thread...



      Schalte mal einen Gang runter, das war nur ein nett gemeintes Tutorial.


      Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
    • Kaliber schrieb:

      Ja es gibt viele Leute, besonders Neulinge, die jetzt vielleicht nicht den neusten und coolsten Shit haben wollen, sondern nur ihr Zeug zum Laufen bekommen wollen.
      Nur warum die Leute im Unklaren lassen ?
      Weil man selber der Meinung ist, dass ist "nicht mehr" nötig ?

      Den Fix im Nebensatz zu erwähnen ist mMn nicht das Gelbe vom Ei.
      "Bevor ich mir Informationen aus der "Bild" hole,
      werde ich anfangen, Wahlergebnisse danach vorauszusagen,
      neben welchen Busch unsere Katze gepinkelt hat."
      Margarete Stokowski

      Beitrag von Kasakow ()

      Dieser Beitrag wurde von Douq aus folgendem Grund gelöscht: Spam ().