Kurze Frage zu den Fehlermeldungen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Ciardenir

Betreff: Kurze Frage zu den Fehlermeldungen

BeitragFr, Mai 06, 2005 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich hab mich mal zu meinem ersten Posting hier getraut Embarassed
Wie anders kaum zu erwarten, hab ich auch gleich ne Frage Wink

Und zwar: Ich war fröhlich am vor mich hin coden (Erfahrungen sammeln etc.) und weil ich damit gleich etwas sinnvolles für spätere Projekte entwickeln wollte, hab ich mich an ein Fenster mit Textausgabe (ne kurze Windows-artige Kurzmitteilung) mit BB 2D gemacht.
Jetzt mein Problem: jedes Mal, wenn ich den Code kompilieren und testen will, spuckt er mir die Fehlermeldung "Illegal Memory Address", also falsche Speicheradresse, aus. Als der Code noch relativ kurz war, ließ sich das noch durch Neustart von BB umgehen, inzwischen nutzt auch das nichts mehr.

Deswegen brauche ich eure Hilfe: Was verursacht diese Fehlermeldung? Und wie kann ich sie umgehen?

Danke schonmal Smile

Ralf

BeitragFr, Mai 06, 2005 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Willkommen im Forum.

Zu Deiner Frage:
Das kann viele Ursachen haben, schalte den Debugger an, um die fehlerhafte Zeile zu finden.

Ansonsten poste mal den Code hier.

soli

BeitragFr, Mai 06, 2005 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du den Debugger anstellst,
wird die Zeile mit der Fehlerquelle markiert.
Warscheinlich ist eine deiner Grafiken nicht geladen.
solitaire
 

Ciardenir

BeitragFr, Mai 06, 2005 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Es scheint tatsächlich am Bild zu liegen (das einzige, das ich momentan verwende, ist der Mauszeiger). Der Debugger bestätigt das ("Image does not exist").

Ich hab schon die Theorie, dass es an der Pfadangabe beim Laden des Bildes zu tun hat. Habs schon extra in den obersten Ordner kopiert, damit sich kein Eingabefehler einschleichen kann. Funktioniert aber trotzdem nicht.

Hier aber der Code:
(einige Dinge sind noch etwas nutzlos, weil ich vorhab es später per Include in etwaige Programme einzubauen, hab ich es etwas variabel gestaltet - daher z.B. auch die Relation zur Auflösung. Alles was mit der Mausabfrage zu tun hat, ist außerdem nicht getestet, weil das Compiling ja nicht funzt ^^ Vielleicht findet ihr da ja auch noch ein paar Fehler Smile).

BlitzBasic: [AUSKLAPPEN]
; KurzmeldungMaus.bb

Fenster = 1
Zeilen = 3

If Zeilen < 1 Then Zeilen = 1
If Zeilen > 8 Then Zeilen = 8

Dim Satz$(Zeilen)

Satz(0) = \"Okay\"
Satz(1) = \"Dies ist ein Textfenster.\"
Satz(2) = \"Wenn Sie das lesen können,\"
Satz(3) = \"Hat alles funktioniert.\"

If AufX = 0 Or AufY = 0 Then
AufX = 800
AufY = 600
EndIf

Pointer = LoadImage(\"C:\Programmieren\pointer.bmp\")

Graphics AufX,AufY

While KeyDown(1) <> 1

SetBuffer BackBuffer()
Cls
Color 255,255,255

If Fenster = 1 Then

DrawImage Pointer,MouseX(),MouseY() ; Maus zeichnen

For I = 0 To 2 ; Fenster zeichnen
Rect (AufX/2)-(AufX/4)+I,(AufY/2)-(AufY/6)+I,AufX/2-2*I,AufY/3-2*I,0
Next

For I = 0 To 1 ; Button zeichnen
Rect (AufX/2)-(AufX/20)+I,(AufY/2)+(AufY/15)+(AufY/60)+I,AufX/10-2*I,AufY/20-2*I,0
Next

If MouseX() > (AufX/2)-(AufX/20) And MouseX() < (AufX/2)-(AufX/20)+(AufX/10) Then ; Buttonkontakt abfragen
If MouseY() > (AufY/2)+(AufY/15)+(AufY/60) And MouseY() < (AufY/2)+(AufY/15)+(AufY/60)+(AufY/20) Then
Color 127,127,127
Rect (AufX/2)-(AufX/20)+2,(AufY/2)+(AufY/15)+(AufY/60)+2,AufX/10-4,AufY/20-4,1
Color 0,0,0
EndIf
EndIf

Text AufX/2,(AufY/2)+(AufY/10)+(AufY/60),Satz(0),1,1 ; Button beschriften

For I = 1 To Zeilen ; Breiteste Zeile bestimmen
For J = I+1 To Zeilen
If StringWidth(Satz(I)) > StringWidth(Satz(J)) Then Breitest = I
Next
For J = I-1 To 1 Step -1
If StringWidth(Satz(I)) > StringWidth(Satz(J)) Then Breitest = I
Next
Next

For I = 1 To Zeilen ; Fügt Leerstellen zur Normierung
While StringWidth(Satz(I)) < StringWidth(Satz(Breitest) ; der Längen hinzu
Satz(I) = LSet$(Satz(I),Len(Satz(I))+1)
Wend
Next

For I = 1 To Zeilen ; Gibt den Inhalt aus
Text (AufX/2)-(AufX/4)+(AufX/20),(AufY/2)-(AufY/6)+(AufY/15)+(I-1)*FontHeight(),Satz(I),0,1
Next

If KeyDown(28) = 1 Then Fenster = 0 ; Beendet durch Enter

EndIf

If Fenster = 0 Then End

Flip
Wend
 

FBI-blitz

BeitragFr, Mai 06, 2005 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde relative Pfade benutzen!
Computer 1: AMD Athlon64 3500+ | nVidia GF 7900GT | 1024 MB DDR-RAM | ASUS A8N-SLI Preimium | 250 GB SATA 2 || WindowsXP | Blitz3D | Blitz+
Computer 2: AMD AthlonXP 2400+ | ATI Radeon 9500 | 512 MB DDR-RAM | MSI K7N2 | 80 GB IDE | 160 GB IDE || WindowsXP | Blitz3D | Blitz+
Computer 3: Intel Pentium MMX | onBoard-Grafik | 32 MB RAM | 1 GB IDE || Windows 98 SE | Blitz+
 

hitokiri

BeitragFr, Mai 06, 2005 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Bilder immer erst nach dem setzen des Graphics mode laden.
Ich würde mir angewöhnen in der allerersten code zeile des Programms den Graphics mode zu initialisieren.
Wenn du den Graphicmode switched oder neu setzt werden alle Bilder die vorher geladen wurden gelöscht!
Also: erst graphics, dann loadimage Wink

Alfadur

BeitragFr, Mai 06, 2005 20:41
Antworten mit Zitat
Benutzer-Profile anzeigen
und setbuffer am besten außerhalb der main loop...
A Cray is the only computer that runs an endless loop in less than four hours.
 

Ciardenir

BeitragSa, Mai 07, 2005 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, danke euch, werds dann mal gleich befolgen Smile

Nur eine Frage noch: Warum das SetBuffer außerhalb der Schleife? Nur aus Performance-Gründen?
 

hitokiri

BeitragSa, Mai 07, 2005 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo, weil es quatsch ist das in die schleife zu packen.
wenn du einmal setbuffer [buffer halt]()
schreibst dann wird alles darauffolgende in den buffer gepackt bis du nen anderen buffer setzt. ist also einfach nicht nötig ihn jedesmal zu setzen und
zieht die performance runter wenn du ihn jedes mal neu setzt.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group