Seite 2 von 2
Verfasst: 03.09.2009 13:58
von Kaeru Gaman
mit Any wird das Handle auf das PB-Objekt zurückgegeben, das enthält das Handle auf das API-Objekt.
mit Nummer wird ein internes Array erzeugt, am Index der Nummer steht das PB-Handle.
ImageID(Nummer oder PB-Handle) gibt das API-Handle zurück.
Code: Alles auswählen
Debug "Image 1":
hPB1 = CreateImage( 0, 256, 256 )
Debug hPB1
Debug ImageID(0)
Debug "Image 2":
hPB2 = CreateImage( #PB_Any, 256, 256 )
Debug hPB2
Debug ImageID(hPB2)
> demnach muss es doch möglich sein CreateImage( 100000, 256, 256 ) auszuführen.
möglich grundsätzlich ja, aber ob es sinnvoll ist, einen Table für über 100.000 Objekte anzulegen, bleibt fraglich.
wenn du tatsächlich so viele Objekte hast, ist es eher sinnvoll eine umfassendere Verwaltung selber zu erstellen.
OT:
das ist keine Beleidigung sondern nur verballhorntes Französich: au contrair, mon ami
Verfasst: 03.09.2009 14:08
von DarkDragon
Kaeru Gaman hat geschrieben:mit Any wird das Handle auf das PB-Objekt zurückgegeben, das enthält das Handle auf das API-Objekt.
mit Nummer wird ein internes Array erzeugt, am Index der Nummer steht das PB-Handle.
ImageID(Nummer oder PB-Handle) gibt das API-Handle zurück.
Code: Alles auswählen
Debug "Image 1":
hPB1 = CreateImage( 0, 256, 256 )
Debug hPB1
Debug ImageID(0)
Debug "Image 2":
hPB2 = CreateImage( #PB_Any, 256, 256 )
Debug hPB2
Debug ImageID(hPB2)
Ja das ist jetzt schon klar.
Kaeru Gaman hat geschrieben:> demnach muss es doch möglich sein CreateImage( 100000, 256, 256 ) auszuführen.
möglich grundsätzlich ja, aber ob es sinnvoll ist, einen Table für über 100.000 Objekte anzulegen, bleibt fraglich.
wenn du tatsächlich so viele Objekte hast, ist es eher sinnvoll eine umfassendere Verwaltung selber zu erstellen.
Sinnvoll ja, dennoch könnte z.B. eine komplett andere Indexgebung vorhanden sein. Vielleicht fängt die Person grundsätzlich erst ab 100000 an zu zählen weil sie die Sprite Indizes so haben will um eine unnötige Verschiebungen der Indizes zu sparen weil der Index für weitere Berechnungen gebraucht wird.
Kaeru Gaman hat geschrieben:OT:
das ist keine Beleidigung sondern nur verballhorntes Französich: au contrair, mon ami
Trotzdem spricht man mit Leuten nicht in einer Sprache die sie nicht verstehen

. Sonst weiß ich ja garnicht wie ich darauf reagieren soll - immerhin stellt dich das über mich.
Verfasst: 03.09.2009 14:13
von Kaeru Gaman
Vielleicht fängt die Person grundsätzlich erst ab 100000 an zu zählen weil sie die Sprite Indizes so haben will um eine unnötige Verschiebungen der Indizes zu sparen weil der Index für weitere Berechnungen gebraucht wird.
dann muss er aber erst recht einen eigenen Table aufmachen und mit Any arbeiten,
sonst erstellt er automatisch eine Tabelle, die 100000 ungenutze einträge hat.
.... außerdem, ob es nun sinnvoll ist, so viele Objekte oder so hohe Indices zu verwenden...
Es ist auf gar keinen Fall sinnvoll, das Handle, das von Any zurückgegeben wird,
im nächsten Atemzug als Nummer wieder zu verwenden, das ist schlichtweg falsch.
Verfasst: 03.09.2009 14:25
von DarkDragon
Kaeru Gaman hat geschrieben:Vielleicht fängt die Person grundsätzlich erst ab 100000 an zu zählen weil sie die Sprite Indizes so haben will um eine unnötige Verschiebungen der Indizes zu sparen weil der Index für weitere Berechnungen gebraucht wird.
dann muss er aber erst recht einen eigenen Table aufmachen und mit Any arbeiten,
sonst erstellt er automatisch eine Tabelle, die 100000 ungenutze einträge hat.
.... außerdem, ob es nun sinnvoll ist, so viele Objekte oder so hohe Indices zu verwenden...
Es ist auf gar keinen Fall sinnvoll, das Handle, das von Any zurückgegeben wird,
im nächsten Atemzug als Nummer wieder zu verwenden, das ist schlichtweg falsch.
Okay, ich wusste nicht, dass PureBasic für Indizes eine Hashtable mit 1 Element pro Container verwendet. Ich dachte das sei ein mitwachsendes Array, aber nicht so mitwachsend, dass es den größten Index nimmt, sondern die Anzahl Indizes.
Verfasst: 03.09.2009 14:58
von Kaeru Gaman
das wollte ich ja mit dem code auf der vorigen Seite demonstrieren:
ein Image mit der Nummer 99999 anzulegen, kostet 1600 KB mehr Speicher als das selbe mit #PB_Any.
und zum ursprünglichen Thema:
das Handle, was von Any zurückgeliefert wird, ist keine Nummer,
und sollte deshalb auf gar keinen Fall als solche wiederverwendet werden.
... und ich glaube auch nicht, dass es in dem Tutorial so drin war, da hat Mok bestimmt was verwechselt.
Verfasst: 03.09.2009 14:59
von DarkDragon
Kaeru Gaman hat geschrieben:das wollte ich ja mit dem code auf der vorigen Seite demonstrieren:
ein Image mit der Nummer 99999 anzulegen, kostet 1600 KB mehr Speicher als das selbe mit #PB_Any.
Ah, das hätte auch die minimale Arraygröße sein können die PureBasic erstmal aufstellt

.