Seite 1 von 1

LoadSprite() funzt nicht.

Verfasst: 15.10.2011 23:54
von KuronoKei1988
Hallo alle zusammen!

Ich wollte mal wieder anfangen, zu programmieren. Hatte mir daher die neuste DEMO von Pure Basic heruntergeladen. Soweit, so gut - Aber kaum will ich mein erstes kleines Programm schreiben, schon werde ich wieder ausgebremst: LoadSprite() funktioniert irgendwie nicht - oder nicht mehr so, wie es mal bei einer der alten Versionen war. Ich bekomme dann jedesmal diese Meldungen nach dem Versuch, es zu Kompilieren:

1.: Die angegebene Datei existiert nicht.
2.: Das angegebene #Sprite ist nicht initialisiert.

Hmmm... toll dachte ich, und startete prompt einmal eines der mitgelieferten Examples. Genau der selbe Mist... Alle examples, die mit Sprites zu tun haben, leiden unter genau den selben "Fehlern".


Hier noch ein paar Infos, die euch vielleicht helfen könnten:

Die angegebene Datei existiert definitiv, auch Absolute Pfadangabe geht nicht.
Ich arbeite mit Windows XP
Die Version der PB Demo ist 4.51 (x86)


Ich danke euch schon mal im Vorraus, und hoffe, dass ihr eine Lösung wisst!


Kurono

Re: LoadSprite() funzt nicht.

Verfasst: 16.10.2011 00:21
von STARGÅTE
Ohne das du hier explizit deinen gestarteten Code posten kann man nichts dazu sagen.

Fest steht, LoadSprite() funktioniert!

Wenn es nicht funktioniert hat es einen/mehrere der folgenden Grunde:
  • Das Bild hat ein anderes Format als *.bmp, und der entsprechende ImagerDecoder wurde nicht geladen
  • Der Pfadname ist nicht absolut, und du arbeitest im falschen Arbeitsverzeichneis (Stichwort: SetCurrentDirectory)
Ich vermuste mal das es ein problem mit dem relativen Dateipfad gibt, denn PB-Datei-Pfad + Angegebener relativer Pfad zum Bild ist nicht gleich dem absoluten Pfad des Bildes, weil es eben davon abhängt was bei SetCurrentDirectory angegeben wurde.

Re: LoadSprite() funzt nicht.

Verfasst: 16.10.2011 00:29
von KuronoKei1988
Danke für die schnelle Hilfe!

Also dann hier mal ein Code, bei dem der Fehler unter anderem auftaucht:

Code: Alles auswählen

;
;
; ------------------------------------------------------------
;
;   PureBasic - Mouse example file
;
;    (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;

If InitMouse() = 0 Or InitSprite() = 0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7", 0)
  End
EndIf

;
;-------- MessageReq and OpenScreen --------
;

MessageRequester("Information", "This will test the fast mouse access..."+Chr(10)+"Press any mouse button to quit!", 0)

If OpenScreen(800, 600, 16, "Mouse") = 0
  MessageRequester("Error", "Impossible to open a 800*600 16 bit screen",0)
  End
EndIf

;
;-------- Init and Load Stuff --------
;

x = 100
y = 100

LoadSprite(0, "Data/PureBasic.bmp", 0)   ; Load nice small Logo

;
;-------- MainLoop --------
;

Repeat
  FlipBuffers()                        ; Flip for DoubleBuffering
  ClearScreen(RGB(0,0,0))                   ; CleanScreen, black

  ExamineKeyboard()
  ExamineMouse()                      
          
  x = MouseX()                         ; Returns actual x pos of our mouse
  y = MouseY()                         ; Returns actual y pos of our mouse
  
  x+MouseWheel()*10
  
  If MouseButton(#PB_MouseButton_Middle)
    MouseLocate(400, 300)
  EndIf

  DisplaySprite(0, x-SpriteWidth(0)/2, y-SpriteHeight(0)/2)

Until MouseButton(#PB_MouseButton_Left) Or MouseButton(#PB_MouseButton_Right)

End    
End 
Bei diesem Code ist es genau der beschriebene Fehler, und das obwohl es doch ein Example ist!

Wenn ich das directory angeben will, sagt er mir: ungültiger Speicherzugriff.
Kann es sein, dass mein Virenscanner dem PB nicht erlaubt, Dateien zu laden? Gemeckert hat er jedenfalls noch nicht!

Re: LoadSprite() funzt nicht.

Verfasst: 16.10.2011 00:55
von STARGÅTE
Dort wird aber ein relativer Pfad verwendet, das heißt das Arbeitsverzeichnis muss bereits in Examples liegen!

Versuch es doch einfach mal bitte mit dem absoluten Pfad des Bildes.

Das Beipsiel funktioniert auch nur dann, wenn du es auch als Datei lädst, also nicht in ein neues Projekt kopieren und starten.

Re: LoadSprite() funzt nicht.

Verfasst: 16.10.2011 01:45
von KuronoKei1988
Ahaaa! Okay, da lag der Fehler! Was man auf jeden Fall erwähnen sollte: Pure Basic verwendet umgekehrte Slashs als Windows... das verwirrt ein wenig! :freak:
Bei dem Example läuft die Maus aber gar nicht gut... hängt voll! :shock:

Auf jeden Fall vielen Dank für die schnelle und kompetente Hilfe! :praise:
Dann kann ich ja endlich loslegen, meine Idee in die Tat umzusetzen!



Kurono

Re: LoadSprite() funzt nicht.

Verfasst: 16.10.2011 01:56
von Ramihyn_
KuronoKei1988 hat geschrieben:Ahaaa! Okay, da lag der Fehler! Was man auf jeden Fall erwähnen sollte: Pure Basic verwendet umgekehrte Slashs als Windows... das verwirrt ein wenig!
In Windows ist zwar der "\" üblich, es funktioniert aber genauso auch der "/". Wenn man also plattformübergreifend einen Pfad angeben will, kann man besser "/" verwenden.

LoadSprite() funzt nicht.

Verfasst: 16.10.2011 19:53
von KuronoKei1988
Wenn man also plattformübergreifend einen Pfad angeben will, kann man besser "/" verwenden.
Vielen Dank auch noch mal dir, Ramihyn_ ! :D

Ich denke, dann ist das Problem gelöst, und der Thread somit erledigt. :allright: