Bugs in Codes
Übersicht BlitzBasic FAQ und Tutorials
E. Urbachehemals "Basicprogger"Betreff: Bugs in Codes |
Sa, Jan 21, 2006 15:17 Antworten mit Zitat |
|
---|---|---|
----------------------------------------------------------------------------------------------------------
Endlosschleife Beschreibung Eine Endlosschleife ist, wie der Name schon sagt, eine Schleife, die sich nie beendet. Fehlermeldung Nein Was kann man dagegen tun Eine Abbruchbedingung einbauen. ---------------------------------------------------------------------------------------------------------- Division durch 0 Beschreibung Die Division durch 0 ist nicht erlaubt Fehlermeldung Ja (division by zero) Was kann man dagegen tun Testen, ob der Wert im Nenner gleich 0 ist und ggf. durch eine Zahl ersetzen, wenn möglich. ---------------------------------------------------------------------------------------------------------- Zugriff auf ein Objekt, das nicht existiert Beschreibung Wenn man z.B. versucht ein Bild anzuzeigen, das gar nicht existiert. Fehlermeldung Kommt auf den Kontext an, wenn mit einer BB-Funktion darauf zugegriffen wird, dann ensteht ein MAV (Memory Access Violation) Was kann man dagegen tun Instanzen: Wert vorher mit New erzeugen Bilder: Prüfen, ob das Bild geladen werden konnte (If image<>0 Then) Sounds: Prüfen, ob die Sounddatei geladen werden konnte (If sound<>0 Then) Dateien: Prüfen, ob die Datei existiert (If FileType(fhandle)=1 Then) ---------------------------------------------------------------------------------------------------------- Felder sind zu klein Beschreibung Zugriff auf einen Feldindex, der nicht existiert. Fehlermeldung Ja (Array out of bounds) Was kann man dagegen tun Prüfen, ob der Wert vom Index kleiner als die Maximalanzahl ist. ---------------------------------------------------------------------------------------------------------- Zugriff auf Bilder, Sounds... etc. nach Graphics Beschreibung Objekte sind beim Einsatz von Graphics nicht mehr da. Fehlermeldung Kommt auf den Kontext an, wenn mit einer BB-Funktion darauf zugegriffen wird, dann ensteht ein MAV (Memory Access Violation) Was kann man dagegen tun Alle Ressourcen wieder neu laden, am besten sollte man schonmal vorrausdenken und eine InitGfx()-Funktion schreiben. ---------------------------------------------------------------------------------------------------------- Zugriff auf Bilder, Sounds... etc. im Vollbildmodus Beschreibung Im Vollbildmodus sind Objekte beim Wechseln zu anderen Programmen nicht mehr da. Fehlermeldung Kommt auf den Kontext an, wenn mit einer BB-Funktion darauf zugegriffen wird, dann ensteht ein MAV (Memory Access Violation) Was kann man dagegen tun Alle Ressourcen wieder neu laden, am besten sollte man schonmal vorrausdenken und eine InitGfx()-Funktion schreiben, die genau dann reagiert, wenn der Benutzer das Programm wieder öffnet. ---------------------------------------------------------------------------------------------------------- Stringfunktion Mid Beschreibung Die Mid-Funktion erwartet als Start-Parameter einen Wert, der größer als 0 ist. Fehlermeldung Ja (parameter must be greater than 0) Was kann man dagegen tun Prüfen, ob der Wert gleich o ist, oder den Wert um 1 inkrementieren (falls das nicht zu weiteren Problemen führt) ---------------------------------------------------------------------------------------------------------- Instr findet den String nicht Beschreibung Die Instr-Funktion findet einen String nicht. Fehlermeldung Nein Was kann man dagegen tun 1) Erstmal versuchen, den String in GROSSBUCHSTABEN zu verwandeln (Instr(Upper$(stri$),"TEST")), dadurch wird die Position des Strings nicht beeinflusst. 2) Keine Umlaute in dem String ---------------------------------------------------------------------------------------------------------- Eigene Funktionen liefern einen falschen Wert zurück Beschreibung Der Wert bei Return ist nicht der, den man erwartet hatte. Fehlermeldung Nein Was kann man dagegen tun Den Rückgabetyp der Funktion ändern. Wenn man einen String haben möchte, dann muss bei der Funktionsdeklaration ein '$' stehen: Function GetString$() Wenn man einen String haben möchte, dann muss bei der Funktionsdeklaration ein '#' stehen: Function GetFloat#() ---------------------------------------------------------------------------------------------------------- Bild an falscher Position Beschreibung Das Bild wird an der falschen Position gezeichnet. Fehlermeldung Nein Was kann man dagegen tun Erstmal prüfen, ob der Ursprung auf 0 liegt, wenn nicht: Origin 0,0 Dann prüfen, ob die HandlePosition des Bildes "stimmt", wenn nicht: HandleImage img, 0,0 ---------------------------------------------------------------------------------------------------------- Mesh wird nicht angezeigt Beschreibung Es erscheint kein Mesh, obwohl es an dieser Position stehen müsste. Fehlermeldung Nein Was kann man dagegen tun 1) Kameraposition korrigieren 2) Sichtweite der Kamera einstellen, vielleciht befindet sich das Objekt ausserhalb der Sichtweite (CameraRange) 3) Ggf. texturieren, wenn das Mesh z.B. schwarz ist. 4) Die Tris sind nicht in der korrekte Reihenfolge verbunden, also umdrehen (FlipMesh) 5) Es ist zu klein (ScaleMesh) 6) Es ist zu groß, die Kamera befindet sich im Mesh (ScaleMesh || FlipMesh) ---------------------------------------------------------------------------------------------------------- Und zuguterletzt ein Spruch, der sehr wichtig ist, damit man sich nicht über die Fehler aufregt: Zitat: "Der Compiler hat immer recht."
Folgendes sollte man sich auch beim Debuggen merken: Zitat: "Eine Variable enthält nicht den Wert selbst, sondern die Position des Wertes im Speicher."
P.S.: Wenn jemandem noch mehr Fehler in Codes einfallen, ab in diesen Thread. |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
#pointer#Gast |
Sa, Jan 21, 2006 17:32 Antworten mit Zitat |
|
---|---|---|
jo, feine Sache, ist vielleicht für Anfänger ganz nützlich. | ||
totonak5 |
Sa, Jan 21, 2006 18:53 Antworten mit Zitat |
|
---|---|---|
Übergeben eines Wertes an eine Variable
Beschreibung Wenn man einer Variable einen Wert übergibt, den man ihr nicht übergeben kann... (zB rgb = getcolor x,y) Fehlermeldung Ja, "illegal type conversion" Was kann man dagegen tun statt zB "rgb = getcolor x,y" nur "getcolor x,y" zu schreiben... hoffe das stimmt so... |
||
Just for Fun!
Jesus loves U! |
Artemis |
Sa, Jan 21, 2006 22:09 Antworten mit Zitat |
|
---|---|---|
Naja nicht unbedingt. Wie mans sieht.
Bei ql:GetColor liegt es daran, dass es eine Prozedur ist, und somit keinen Wert zurückgibt. Edit: @totonak5 Ich hab ja geschrieben, "Wie mans sieht". |
||
- Zuletzt bearbeitet von Artemis am Sa, Jan 21, 2006 22:41, insgesamt einmal bearbeitet
totonak5 |
Sa, Jan 21, 2006 22:39 Antworten mit Zitat |
|
---|---|---|
das ist ja auch das was ich gesagt habe, oder nicht!?
naja, gut, du hast es schöner ausgedrückt |
||
Just for Fun!
Jesus loves U! |
Übersicht BlitzBasic FAQ und Tutorials
Powered by phpBB © 2001 - 2006, phpBB Group