Memory access Vialtion bei "Before" [ERLEDIGT]

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: Memory access Vialtion bei "Before" [ERLEDIGT]

BeitragFr, Okt 12, 2007 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab ein problem mit Types. Ich hab eine Map mit ihnen erstellt und wollte jetzt zufällig da einen wert auf 1 setzten, "map\frame". Wenn map\frame = 0 ist, wird ein Tile gemalt, wo man drauf laufen kann (Schlucht), wenn = 1 ist, wird eins gemalt wo man nicht drauf laufen kann. Das funzt aber alles, nur jetzt wollt ich so machen, dass nicht 2 "Lücken" neben einander seinen sollen. dafür hab ich den Code: [AUSKLAPPEN]
Function CreateMap(Map_with,anz_Fall)
  Local x = 0
  If anz_Fall > Map_with/2 Then anz_Fall = Map_with/2
  For i = 1 To Map_with
    map.map = New map
    map\x = x:x = x + 1
    map\frame = 0
    map\Feld = 1
  Next
  For i = 1 To anz_Fall
    x = Rand(3,Map_with)
    For map.map = Each map
      If x = map\x Then
        map.map = Before map
        If map.map <> Null
          If map\frame = 0 Then
            map.map = After After map
            If map\frame = 0 Then map.map = Before map:map\frame = 1:Exit
          Else
            Exit
          EndIf
        EndIf
       EndIf
    Next
  Next
End Function


Da kommt immer "Memory access Violation" und bricht ab. Der zeigt mir den Fehler bei "map.map = before map" an mit "Objet does not exist". Das dumme ist, das es manchmal funzt und machmal net.

th Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
  • Zuletzt bearbeitet von ToeB am Fr, Okt 12, 2007 17:26, insgesamt einmal bearbeitet
 

Lador

BeitragFr, Okt 12, 2007 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, wenn deine map.map das allererste ist, und du machst Before, dann müsste es doch eigentlich keines mehr finden, oder fängt es dann wieder hinten an?

MFG Lador
 

Dreamora

BeitragFr, Okt 12, 2007 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Nö, stimmt schon.
Vor dem ersten kommt NULL wie nach dem letzten auch.

Bei MAV, prinzipiell das Programm im Debug Modus ausführen, dann bekommst du einen sinnvolleren Fehler, in diesem Fall vermutlich "Tried to access a null ..."
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ToeB

BeitragFr, Okt 12, 2007 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist schön... aber was soll ich denn jetzt machen ??

thx und mfg Crack93

P.S.: der Type "0" oder "-1" kann nicht ausgewählt werden, da ich erst ab "3" den Zufalls generator gestartet hab "Rand(3,Map_with)"
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Lador

BeitragFr, Okt 12, 2007 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann lass das "3," einfach weg...Oder bezweckst du etwas bestimmtes damit?

Lösungen: Dim-Feld (was du aber wahrscheinlich nicht willst), ein extra Field, welches die Index-Nummer angibt, mehr fällt mir spontan nicht ein...

Zum extra-Field:

Das hast du schon mit deinem "x" gemacht. Du musst nur noch mit einbauen, dass die Before-Abfrage nur gemacht wird, wenn map\x > 0 gemacht wird.

MFG Lador
 

Dreamora

BeitragFr, Okt 12, 2007 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Andere frage: Was soll das genau bewirken: map.map = Before map:map\frame

Muss mich nämlich wegen meines Kommentars oben korrigieren.

In deinem Fall ist das Problem das du Before auf etwas anderes als einen Type anwendest, denn ich nehme mal an das in Frame eine Nummer steht.

Before / After können nur genutzt werden um eine Type Instanz vor oder hinter einer anderen zu finden / setze, mehr nicht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

ToeB

BeitragFr, Okt 12, 2007 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ach ich weiß warum da n fehler gibt. Ich prüfe ja nicht nur der Type vor dem aktuellen steht sondern auch hinter. Ich hab aber geschrieben "Rand(3,ma_with)". Also der Letzte Typeeintrag hat ja keinen Nächsten xDD ^^

thx und mfg Crack93


P.S.: (Forum kann geschlossen werden)
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

BladeRunner

Moderator

BeitragFr, Okt 12, 2007 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
P.S.: (Forum kann geschlossen werden)

Nöö, wir wollten schon noch weitermachen.
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group