Bugs in Codes

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

 

E. Urbach

ehemals "Basicprogger"

Betreff: Bugs in Codes

BeitragSa, Jan 21, 2006 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
----------------------------------------------------------------------------------------------------------
Endlosschleife

Question Beschreibung
Eine Endlosschleife ist, wie der Name schon sagt, eine Schleife, die sich nie beendet.

Exclamation Fehlermeldung
Nein

Idea Was kann man dagegen tun
Eine Abbruchbedingung einbauen.
----------------------------------------------------------------------------------------------------------
Division durch 0

Question Beschreibung
Die Division durch 0 ist nicht erlaubt

Exclamation Fehlermeldung
Ja (division by zero)

Idea 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

Question Beschreibung
Wenn man z.B. versucht ein Bild anzuzeigen, das gar nicht existiert.

Exclamation Fehlermeldung
Kommt auf den Kontext an, wenn mit einer BB-Funktion darauf zugegriffen wird, dann ensteht ein MAV (Memory Access Violation)

Idea 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

Question Beschreibung
Zugriff auf einen Feldindex, der nicht existiert.

Exclamation Fehlermeldung
Ja (Array out of bounds)

Idea Was kann man dagegen tun
Prüfen, ob der Wert vom Index kleiner als die Maximalanzahl ist.
----------------------------------------------------------------------------------------------------------
Zugriff auf Bilder, Sounds... etc. nach Graphics

Question Beschreibung
Objekte sind beim Einsatz von Graphics nicht mehr da.

Exclamation Fehlermeldung
Kommt auf den Kontext an, wenn mit einer BB-Funktion darauf zugegriffen wird, dann ensteht ein MAV (Memory Access Violation)

Idea 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

Question Beschreibung
Im Vollbildmodus sind Objekte beim Wechseln zu anderen Programmen nicht mehr da.

Exclamation Fehlermeldung
Kommt auf den Kontext an, wenn mit einer BB-Funktion darauf zugegriffen wird, dann ensteht ein MAV (Memory Access Violation)

Idea 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

Question Beschreibung
Die Mid-Funktion erwartet als Start-Parameter einen Wert, der größer als 0 ist.

Exclamation Fehlermeldung
Ja (parameter must be greater than 0)

Idea 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

Question Beschreibung
Die Instr-Funktion findet einen String nicht.

Exclamation Fehlermeldung
Nein

Idea 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

Question Beschreibung
Der Wert bei Return ist nicht der, den man erwartet hatte.

Exclamation Fehlermeldung
Nein

Idea 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

Question Beschreibung
Das Bild wird an der falschen Position gezeichnet.

Exclamation Fehlermeldung
Nein

Idea 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

Question Beschreibung
Es erscheint kein Mesh, obwohl es an dieser Position stehen müsste.

Exclamation Fehlermeldung
Nein

Idea 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

BeitragSa, Jan 21, 2006 17:32
Antworten mit Zitat
jo, feine Sache, ist vielleicht für Anfänger ganz nützlich. Smile
 

totonak5

BeitragSa, Jan 21, 2006 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Übergeben eines Wertes an eine Variable

Question Beschreibung

Wenn man einer Variable einen Wert übergibt, den man ihr nicht übergeben kann... (zB rgb = getcolor x,y)

Exclamation Fehlermeldung

Ja, "illegal type conversion"

Idea 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

BeitragSa, Jan 21, 2006 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jan 21, 2006 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist ja auch das was ich gesagt habe, oder nicht!?
naja, gut, du hast es schöner ausgedrückt Rolling Eyes
Just for Fun!
Jesus loves U!

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group