Das heutige Thema lautet
Overflow
Das Wort scheint zuerst ziemlich unbekannt für Einige bzw. die Meisten hier zu sein.
Beginnen wir zuerst, das Wort ins Deutsche zu übersetzen.
Und was kommt nun bei der Google Übersetzung heraus?
Überlauf
Nun. Noch können Einige nichts damit anfangen. Hier mal ein kleines Beispiel:
Du hast ein leeres Fass bzw eine Variable mit dem Inhalt 0.
Du füllst das Fass mit Wasser bzw eine Variable mit Zahlen.
Irgendwann hat das Fass jedoch genug Wasser und beginnt zu überlaufen bzw.
die Variable geht über die maximalen Kapazitäten über und die Werte
beginnen an zu spinnnen und stimmen nicht mehr überein.
Nun, das wäre eigentlich schon die Erklärung.
Welche Kapazitäten haben nun Integer bzw. normale "new" Variablen in Pawn?
Von −2.147.483.648 bis 2.147.483.647.
Wenn ihr nun hergeht und sagt, dass der neue Wert eurer Variable über dieser
Grenze liegt (vielleicht ein Geldwert), dann beginnt der Wert an zu spinnen und
zeigt vielleicht ein negativen Wert an.
Warum haben Variablen Kapazitäten?
In der Programmierung (C++/C/C#/...) gibt es verschiedene Datentypen mit
unterschiedlichen Bytes-Größen. Sie dienen dazu, um nicht immer bei Speicherung
von Zahlen Millionen von möglichen Werten zu erlauben, da dies ein Haufen von
Bytes im Arbeitsspeicher verbraucht. Es wurden bestimmte Größen festgelegt und
bei Integer hat man sich auf 4 Bytes (32 Bit = 4 Bytes = 4 * 8 Bit (1 Byte = 8 Bit)) geeinigt. Ein Integer
ist gleichzusetzen mit dem "new", wie Ihr es in Pawn kennt.
Könnte man da etwas machen?
Ja, denn zum Beispiel bei Geld haben bereits die meisten Server eine serverseitige
Verwaltung davon. In den Funktionen müsste nur eine if-Abfrage geschehen und
die sollte auf eine parallele Variable bzw PVar zurückgreifen. Wenn wieder Geld
abgezogen wird, dann zuerst überprüfen, ob Reste auf der PVar bzw. der parallelen
Variable liegt und dann erst von der richtigen Geldquelle abziehen.
Hier noch ein kleines Bild dazu, wie es bei Arrays aussieht (Quelle
Nun das wars.
Jetzt kennt ihr Overflow und seid glücklich, sofern ihr den ganzen Text gelesen habt und
nicht nur 50% oder weniger wie bei meinem "Format" Tutorial.
Freundliche Grüße
- Necktrox