Blitzcc.exe funktioniert nicht mehr

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

foxtrot92

Betreff: Blitzcc.exe funktioniert nicht mehr

BeitragDo, Nov 21, 2013 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich bin neu hier in den Forum. Ich heute das erste mal angefangen ein wenig mit BlitzBasic
zu coden. Nach etwas Zeit wollte ich natürrlich ausprobieren was ich da zusammen gefrimmelt habe
(rudimentärer code)
und habe auf Run gedrückt. Dann habe ich aber nur ganz kurz Schwarz gesehen und es hat sich wieder geschlossen und von windows(7) kam dann nur die fehlermeldung Blitzcc.exe funktioniert nicht mehr.

Woran kann das liegen? Was kann ich dagegen tun? Ist evtl meine GraKa schuld(Sapphire 7970 Dual X)?
Danke im vorraus

Gruß foxtrot


Hier noch der Code evtl liegt es ja daran:
Code: [AUSKLAPPEN]

Graphics 640,480,0,1
SetBuffer BackBuffer()

Dim inventar_felder(12,12)
Data 1,1,1,1,1,1,1,1,1,1,1,3 ;1
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;2
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;3
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;4
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;5
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;6
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;7
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;8
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;9
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;10
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;11
Data 1,1,1,1,1,1,1,1,1,1,1,1 ;12

Global Feld1 = LoadImage("feld1.bmp")
Global Feld2 = LoadImage("feld2.bmp")
Global Feld3 = LoadImage("feld3.bmp")

While Not KeyHit(1)
Cls
 drawinventory()
 Flip
Wend

Function drawinventory()

   For y = 0 To 12
      For x = 0 To 12
         Read inventar_felder(x,y)
         If inventar_felder(x,y) = 1 Then
            DrawImage(Feld1, x*20, y*20)
         ElseIf inventar_felder(x,y) = 2 Then
            DrawImage(Feld2, x*20, y*20)
         ElseIf inventar_felder(x,y) = 3 Then
            DrawImage(Feld3, x*20, y*20)
         EndIf
      Next
   Next
End Function

End

BladeRunner

Moderator

BeitragDo, Nov 21, 2013 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne den Code jetzt getestet zu haben, da grade hier nicht möglich:
Teste mal ob eine "Leerapp" funktioniert, nur bestehend aus Graphics, repeat until und cls/flip.
Wenn das geht ist Blitz grundsätzlich in Ordnung.
Ich tippe auf nicht geladene Grafiken.
Edit: Ich seh grad: Du machst ein Array von 13*13 Feldern, hast aber nur Datas für 12*12.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

foxtrot92

BeitragDo, Nov 21, 2013 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke erstmal für die schnelle antwort Wink
Ja also Blitz scheint in ordnung zu sein ich schau jetzt einfach mal nach fehlern in meinen Code.

BladeRunner

Moderator

BeitragDo, Nov 21, 2013 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie schon erwähnt ist dien Array zu groß für den geladenen Inhalt. Damit laufen die For-next zu weit und *BUMM*
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

foxtrot92

BeitragDo, Nov 21, 2013 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Das müsste doch eigentlich passen oder?
Code: [AUSKLAPPEN]
Dim inventar_felder(11,11)
Data 1,1,1,1,1,1,1,1,1,1,1,1 ;1
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;2
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;3
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;4
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;5
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;6
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;7
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;8
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;9
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;10
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;11
Data 1,1,1,1,1,1,1,1,1,1,1,1 ;12


und die for schleifen

Code: [AUSKLAPPEN]

   For y = 0 To 10
      For x = 0 To 10
         Read inventar_felder(x,y)
         If inventar_felder(x,y) = 1 Then
            DrawImage(Feld1, x*20, y*20)
         ElseIf inventar_felder(x,y) = 2 Then
            DrawImage(Feld2, x*20, y*20)
         ElseIf inventar_felder(x,y) = 3 Then
            DrawImage(Feld3, x*20, y*20)
         EndIf
      Next
   Nex

ZEVS

BeitragDo, Nov 21, 2013 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Frage ist: funktioniert es?

ZEVS
 

foxtrot92

BeitragDo, Nov 21, 2013 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein leider nicht Sad

Hubsi

BeitragDo, Nov 21, 2013 17:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Poste den kompletten Code damit wir selbst probieren können. So ist ein Ratespiel Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

foxtrot92

BeitragDo, Nov 21, 2013 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics 1280,1000,0,2
SetBuffer BackBuffer()

Dim inventar_felder(12,12)
Data 1,1,1,1,1,1,1,1,1,1,1,1 ;1
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;2
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;3
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;4
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;5
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;6
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;7
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;8
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;9
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;10
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;11
Data 1,1,1,1,1,1,1,1,1,1,1,1 ;12


Global Feld1 = LoadImage("\Users\Foxtrot\Desktop\BlitzRPG\feld1.bmp")
Global Feld2 = LoadImage("\Users\Foxtrot\Desktop\BlitzRPG\feld2.bmp")


While Not KeyHit(1)
Cls
 draw()
 Flip
Wend

Function draw()
   For y = 0 To 12
      For x = 0 To 12
         Read inventar_felder(x,y)
         If inventar_felder(x,y) = 1 Then
            DrawImage(Feld1, x*80, y*80)
         ElseIf inventar_felder(x,y) = 2 Then
            DrawImage(Feld2, x*80, y*80)
         ElseIf inventar_felder(x,y) = 3 Then
            DrawImage(Feld3, x*80, y*80)
         EndIf
      Next
   Next
End Function


End

Holzchopf

Meisterpacker

BeitragDo, Nov 21, 2013 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Dir gehen die Daten für's Read aus, spätestens beim zweiten Schleifendurchgang Rolling Eyes

Ich habe meine Verbesserungen mal direkt in den Code geschrieben:

BlitzBasic: [AUSKLAPPEN]
Graphics 1280,1000,0,2 
SetBuffer BackBuffer()

; die Karte ist 12x12 gross, da die Indizes von 0-11 gehen,
; gibt man bei Dim 11x11 an
Dim inventar_felder(11,11)
Data 1,1,1,1,1,1,1,1,1,1,1,1 ;0
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;1
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;2
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;3
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;4
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;5
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;6
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;7
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;8
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;9
Data 1,2,2,2,2,2,2,2,2,2,2,1 ;10
Data 1,1,1,1,1,1,1,1,1,1,1,1 ;11

Global Feld1 = LoadImage("\Users\Foxtrot\Desktop\BlitzRPG\feld1.bmp")
Global Feld2 = LoadImage("\Users\Foxtrot\Desktop\BlitzRPG\feld2.bmp")

load()

While Not KeyHit(1)
Cls
draw()
Flip
Wend

; wichtig: das Array nur am Anfang einmal befüllen, nicht jeden Schleifendurchgang
Function load()
; nur bis 11 gehen, da die Indizes bei 0 beginnen
For y = 0 To 11
For x = 0 To 11
Read inventar_felder(x,y)
Next
Next
End Function

Function draw()
For y = 0 To 11
For x = 0 To 11
; Die Daten bei jedem draw()-Aufruf neu einzulesen ist unnötig und würde
; zudem nur funktionieren, wenn du nach Abschluss des Einlesevorgangs
; den Read-Pointer wieder an den Anfang des Datenfeldes setzt (siehe Restore),
; da Read sonst hinter dem Datenfeld versucht weiter zu machen.
;Read inventar_felder(x,y)
If inventar_felder(x,y) = 1 Then
DrawImage(Feld1, x*80, y*80)
ElseIf inventar_felder(x,y) = 2 Then
DrawImage(Feld2, x*80, y*80)
ElseIf inventar_felder(x,y) = 3 Then
DrawImage(Feld3, x*80, y*80)
EndIf
Next
Next
End Function


End
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Xeres

Moderator

BeitragDo, Nov 21, 2013 20:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum stürzt der Compiler ab, anstatt die eher eindeutige Fehlermeldung "Out of Data" zu werfen? Oder startest du erst die kompilierte .exe zum testen?
Seltsam, das.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

DAK

BeitragDo, Nov 21, 2013 20:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nehme an, dass dein Debug-Modus deaktiviert ist, oder? Schalt den mal ein. Ansonsten checkt BB leider auf fast gar keine Fehler (lässt dir z.B. das Adressieren über das Ende des Arrays hinaus zu), was dann im Fehlerfall zu unberechenbaren Problemen führt (so kann je nachdem was gerade wie in deinem Speicher liegt, wenn du über das Ende des Arrays hinaus schreibst, entweder alles gut gehen, zufällig Variablen überschrieben werden oder gar das Programm abstürzen).

Mach den Debug-Modus erst dann weg, wenn du dir ziemlich sicher bist, dass du keine Fehler mehr im Programm hast.
Gewinner der 6. und der 68. BlitzCodeCompo

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group