Zugriff auf Pfad funktioniert -> Zugriff auf Variable nic

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

M0rgenstern

Betreff: Zugriff auf Pfad funktioniert -> Zugriff auf Variable nic

BeitragMo, Mai 17, 2010 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute.
Ich wollte versuchen, das Skinningprogramm, das mir d-bug geschrieben hat (hier: https://www.blitzforum.de/foru...404#365404) jetzt auch nutzbar zu machen.

Momentan sieht der Anfang so aus:

BlitzMax: [AUSKLAPPEN]
Import brl.timer
Import brl.random
Import brl.PNGLoader
Import brl.standardio
Import "Includes/Images.bmx"
SuperStrict

Graphics (640,480,0)

Global tiChar:TImage = LoadImage("gfx/Player.png")
Global tiFlag:TImage = LoadImage("gfx/Flags/Deutschland.png")


Das ganze wollte ich jetzt so abändern, dass eine Variable genutzt wird für die Bilder.
Ich importiere ja die Datei Images.bmx.
Dadrin werden alle benötigten Bilder geladen und in Variablen abgespeichert.
Zum Beispiel:
BlitzMax: [AUSKLAPPEN]
Global tiPlayer:TImage = LoadImage("gfx/Player.png")


Wenn ich aber oben das Programm folgendermaßen abändere:
BlitzMax: [AUSKLAPPEN]
Global tiChar:TImage = LoadImage(tiplayer)

Dann bekomme ich die Meldung Zitat:
Unhandled Exception:Attempt to access field or method of Null object


Also wird irgendwo danach, wo ja auf die Pixmap der Bilder zugegriffen wird, versucht auf das BIld zuzugreifen, das da nicht vorhanden ist.

Das Problem bei der Sache ist: Warum ist das so?
Also, warum funktioniert das ganze, wenn ich den Pfad angebe, aber nicht wenn ich die Variable nutze?

Lg, M0rgenstern

Xeres

Moderator

BeitragMo, Mai 17, 2010 20:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Einmal ist die Variable ein Timage, einmal ein String - oder wie oder was?
Nachtrag:
Timage <> TPixmap
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)

mpmxyz

BeitragMo, Mai 17, 2010 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
In "LoadImage" steckt ein "LoadPixmap", welches den Parameter übernimmt.
Solange du aber keine eigene Pixmaploader schreibst, weiß "LoadPixmap" nichts mit einem Bildobjekt anzufangen.
Das dumme ist, dass so ein Loader nur Streams annimmt.
->Man müsste einen unsinnigen ImageStream + eine weitere unsinnige ImageStreamFactory zum Loader schreiben, nur um das Bild als Parameter durchzuschieben.
Du solltest dir am Besten eine eigene Funktion schreiben, die entweder das Bild, welches angegeben wurde, zurückgibt, oder versucht, ein Bild aus dem Parameter zu laden, wenn dieser kein Bild ist.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

M0rgenstern

BeitragMo, Mai 17, 2010 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Xeres: Ja genau. Einmal string, einmal ein TImage.

Vielen Dank Xeres. Genau dein Beitrag hat mich drauf gestoßen.
Ich muss das ganze so schreiben:

BlitzMax: [AUSKLAPPEN]
Global tiChar:TImage = tiplayer


Dann gehts.
Das mit dem Loadimage muss man weglassen. Das Bild wurde ja schon geladen wenn man die Variable nutzt.

Dankeschön und sorry für den dummen Fehler.

Lg, M0rgenstern

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group