BUG: CopyImage mit #PB_Any

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
ParkL
Beiträge: 17
Registriert: 02.11.2004 16:13
Wohnort: Ruhrpott
Kontaktdaten:

BUG: CopyImage mit #PB_Any

Beitrag von ParkL »

Hi !

Ein kleiner Bug Report:

Code: Alles auswählen

im1 = CreateImage(#PB_Any, 1,1)
im2 = CreateImage(#PB_Any, 1, 1)
CopyImage(im2, im1)
Wenn man mit pb_any bilder erzeugt, bekommen sie sehr hohe id's.

Beim Copy Image Befehl tritt dann ein Fehler auf, weil er meint, die ID sei zu hoch.

Ist jetzt nix weltbewegendes, aber immer noch ein bug.

Park
tranquil
Beiträge: 117
Registriert: 22.09.2004 22:07
Kontaktdaten:

Beitrag von tranquil »

Ich bin mal so frei und schreibe dein posting ins englische forum da fred hier nicht reinsieht.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

das ist schon etwas länger bekannt. SirCus hat, behaupte ich jetz mal, davon berichtet. Mann muss da wohl mit festen konstanten arbeiten, sofern möglich.
Bild
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Das selbe problem tritt auch bei CopySprite() auf.

Du versuchst ja ein neues Image anhand eines vorhanden zu erstellen, es zu kopieren. Hierbei willste lediglich, dass das vorhandene Image automatisch frei gegeben wird.

Das der Debugger reagiert find ich ganz normal, könnt die Variable auch von hand so hoch gesetzt worden sein (ausversehen).
Wenn du das so machen willst, dann sollteste das eventuell so machen :D

Code: Alles auswählen

im1 = CreateImage(#PB_Any, 1, 1) 
im2 = CreateImage(#PB_Any, 1, 1) 
FreeImage(im2)
im2 = CopyImage(im1, #PB_Any)
^^selbst wenns nen Bug wäre, so umgehste denn spielend und von daher ist der nicht sehr "wichtig" :wink:

MFG PMV
Zuletzt geändert von PMV am 18.12.2004 22:17, insgesamt 1-mal geändert.
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
tranquil
Beiträge: 117
Registriert: 22.09.2004 22:07
Kontaktdaten:

Beitrag von tranquil »

also diese überprüfung vom debugger "value or ID too high" find ich ja mal total hirnrissig. es liegt doch an dem programmierer IDs zu vergeben. und solange in den docs nicht definitiv festgelegt wird:
ID = Word gehe ich immer davon aus das es nen Long ist. Auf ein Warning könnte ich grad noch so einigen, aber alles andere... naja.

und so "drum herum" coding ist doch auch was für den allerwertesten. ich programmiere basic weil ich ein programm gut lesen möchte und schnell zum ziel will. sowas zerstört die orientierung im code unnötig!

Mike
Benutzeravatar
ParkL
Beiträge: 17
Registriert: 02.11.2004 16:13
Wohnort: Ruhrpott
Kontaktdaten:

Beitrag von ParkL »

PMV hat geschrieben:

Code: Alles auswählen

im1 = CreateImage(#PB_Any, 1, 1) 
im2 = CreateImage(#PB_Any, 1, 1) 
FreeImage(im2)
im2 = CopyImage(im1, #PB_Any)
MFG PMV
Ok, du hast recht, das kann man so machen.

Ich finde es allerdings unlogisch, daß Sachen die mit PB-Image-Konstanten normal funktionieren, nicht auch für dynamisch erzeugte PB-Image-ID's geht. Wenn man mit 2 "normalen" #IMAGE Id's arbeitet ist der freeimage befehl ja schon Teil des CopyImage Befehls. PB macht intern wahrscheinlich genau das, was Du da oben hingeschrieben hast.

Es geht dabei mehr "ums Prinzip", ich finde es einfach nervig, daß man ständig irgendwelche Workarounds programmieren muß, weil die Befehle nicht wie dokumentiert funktionieren.

P
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

Zu dem, was LittleFurz angesprochen hat ... ich hab dannach mal gesucht und ich glaub den richtigen Thread dazu gefunden zu haben, zumindest wurde dort auch über #PB_Any diskutiert :D
Link: #PB_Any : Gadget object number is very high (over 10000)....

in dem Thread hat Freak in einem seinter Posts follgendes erwähnt:
Das ist eindeutig die falsche Art! Die Daten für die selbst vergebenen Objektnummern
werden praktisch in einem internen Array gespeichert. Wenn du also einfach
ständig die Nummer erhöhst, wächst das Array dauernd an. Desshalb soll man
da nicht so hohe Nummern verwenden und darauf macht der Debugger hier
aufmerksam.
^^das erklärt, warum Fred diese Sperre eingebaut hat. Obs nun trotzdem besser wäre, das ganze so zu machen, das es trotzdem weiter läuft mit Debugger, darüber lässt sich streiten :D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: BUG: CopyImage mit #PB_Any

Beitrag von Danilo »

ParkL hat geschrieben:Ein kleiner Bug Report:

Code: Alles auswählen

im1 = CreateImage(#PB_Any, 1,1)
im2 = CreateImage(#PB_Any, 1, 1)
CopyImage(im2, im1)
Wenn man mit pb_any bilder erzeugt, bekommen sie sehr hohe id's.

Beim Copy Image Befehl tritt dann ein Fehler auf, weil er meint, die ID sei zu hoch.

Ist jetzt nix weltbewegendes, aber immer noch ein bug.
Der Code ist doch eh falsch.
Der richtige Code wäre:

Code: Alles auswählen

im1 = CreateImage(#PB_Any, 1,1)
im2 = CopyImage(im1, #PB_Any)
CopyImage kopiert *nicht* von Bild zu Bild, sondern erstellt
ein neues Bild von dem Vorhandenen!

Ich kann da keinen Bug erkennen. Der 2. Parameter ist die
Nummer des neuen Bildes oder #PB_Any - aber kein vorhandenes Bild.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
ParkL
Beiträge: 17
Registriert: 02.11.2004 16:13
Wohnort: Ruhrpott
Kontaktdaten:

Beitrag von ParkL »

naja ... PB sollte in seinem internen array erkennen, daß dieses Handle schon belegt ist, es FreeEn und beim Betriebssystem ein neues Bild beantragen, dessen handle dann wieder unter diesem Handle abgelegt wird.

So funktioniert's ja auch mit Konstanten-Images.

So hab ich das zumindest verstanden.

Ist ja auch egal ... So wichtig isses nun wirklich auch nicht...

Von mir aus können wir den Thread jetzt auch schließen !
Benutzeravatar
Andre
PureBasic Team
Beiträge: 1765
Registriert: 11.09.2004 16:35
Computerausstattung: MacBook Core2Duo mit MacOS 10.6.8
Lenovo Y50 i7 mit Windows 10
Wohnort: Saxony / Deutscheinsiedel
Kontaktdaten:

Beitrag von Andre »

Werde Danilo's Hinweise mal noch genauer in die Hilfe aufnehmen. :)
Bye,
...André
(PureBasicTeam::Docs - PureArea.net | Bestellen:: PureBasic | PureVisionXP)
Antworten