ImageID() gibt negativen Wert zurück

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
fabulouspaul
Beiträge: 120
Registriert: 01.04.2011 21:59

ImageID() gibt negativen Wert zurück

Beitrag von fabulouspaul »

Hallo Gemeinde,

kurze Frage: wie ist der Datentype den die Funktion ImageID() zurück gibt?

Hintergrund: ich habe eine DLL gebastelt, die Image-Manipulationen durchführt. Ein Fehler in der Funktion wird als negativer Wert zurück gegeben, ansonsten soll das aufrufende Programm den Betriebsystem-Handle (ImageID()) des Images zurück bekommen.

Ich arbeite mit PB 5.62/32-Bit und habe nun schon diverse Datentypen probiert (.L, .I, .D) , aber ab und zu liefert ImageID() einfach einen negativen Wert zurück?!

Code: Alles auswählen

EnableExplicit

Enumeration 
  #img_nummer
EndEnumeration

Global i
Global img_handle.i

For i = 1 To 100
  If LoadImage(#img_nummer, "D:\test.bmp")
    img_handle = ImageID(#img_nummer)
    Debug img_handle
    FreeImage(#img_nummer)
  Else
    Debug "Fehler!"
  EndIf
Next

End
Wieso ist das so und was kann man dagegen machen?
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: ImageID() gibt negativen Wert zurück

Beitrag von ccode_new »

fabulouspaul hat geschrieben:wie ist der Datentype den die Funktion ImageID() zurück gibt?
Ein Pointer-Typ (Denke Ich) , also 64 Bit fähig.

Als Speicherpointer sind diese negativen Werte normal.
Das einzige falsche Handle dürfte "0" (NULL) sein.

Beispiel (Benutze @ und bekomme die ID):

Code: Alles auswählen

Bild1 = LoadImage(#PB_Any, "D:\test.bmp")
Bild2 = LoadImage(#PB_Any, "D:\test2.bmp")
img_handle1 = ImageID(Bild1)
img_handle2 = ImageID(Bild2)
Debug @img_handle1
Debug @img_handle2
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Antworten