LoadSprite() funzt nicht.

Anfängerfragen zum Programmieren mit PureBasic.
KuronoKei1988
Beiträge: 4
Registriert: 15.10.2011 23:22
Computerausstattung: Intel Core 2 Duo , Windows XP , NVidia Geforce 9800 GTX+, 4GB RAM
Wohnort: Schleswig-Holstein

LoadSprite() funzt nicht.

Beitrag 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
Das Leben ist ein scheiß Spiel, aber die Grafik ist irre!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: LoadSprite() funzt nicht.

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
KuronoKei1988
Beiträge: 4
Registriert: 15.10.2011 23:22
Computerausstattung: Intel Core 2 Duo , Windows XP , NVidia Geforce 9800 GTX+, 4GB RAM
Wohnort: Schleswig-Holstein

Re: LoadSprite() funzt nicht.

Beitrag 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!
Das Leben ist ein scheiß Spiel, aber die Grafik ist irre!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: LoadSprite() funzt nicht.

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
KuronoKei1988
Beiträge: 4
Registriert: 15.10.2011 23:22
Computerausstattung: Intel Core 2 Duo , Windows XP , NVidia Geforce 9800 GTX+, 4GB RAM
Wohnort: Schleswig-Holstein

Re: LoadSprite() funzt nicht.

Beitrag 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
Das Leben ist ein scheiß Spiel, aber die Grafik ist irre!
Ramihyn_
Beiträge: 61
Registriert: 20.06.2007 10:56

Re: LoadSprite() funzt nicht.

Beitrag 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.
KuronoKei1988
Beiträge: 4
Registriert: 15.10.2011 23:22
Computerausstattung: Intel Core 2 Duo , Windows XP , NVidia Geforce 9800 GTX+, 4GB RAM
Wohnort: Schleswig-Holstein

LoadSprite() funzt nicht.

Beitrag 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:
Das Leben ist ein scheiß Spiel, aber die Grafik ist irre!
Antworten