Gadgetnummer über 9999 möglich ?
Re: Gadgetnummer über 9999 möglich ?
Hat sich da mittlerweile eigentlich irgendwas geändert?
#PB_Any liefert bei mir z.B. 7-stellige Objekt# zurück... sobald man aber z.B. ein Gadget mit FreeGadget() löscht und mit der gleichen "#PB_Any Objekt#" wieder woanders plazieren will, dann meckert er wieder rum über die hohe Objekt# über 10.000 ...
Sehr komisch...
#PB_Any liefert bei mir z.B. 7-stellige Objekt# zurück... sobald man aber z.B. ein Gadget mit FreeGadget() löscht und mit der gleichen "#PB_Any Objekt#" wieder woanders plazieren will, dann meckert er wieder rum über die hohe Objekt# über 10.000 ...
Sehr komisch...
PB 6.21 | Win 11
Re: Gadgetnummer über 9999 möglich ?
Was genau soll sich ändern?
Mit #PB_Any wird ein "verbindunsloses" Element für das Objekt erstellt und du bekommst in dem Fall eine Art Adresse (Objektnummer) zurück. Diese Nummer selbst zu verwenden geht nicht.
Wenn du eine Konstante angibst, wird das jeweilige Feld in einem Array für die Elemente des Objekts belegt.
Und es wurde schon oft genug gesagt, das es nicht nur sinnfrei ist ein Gadget mit der Nummer 1'000'000 anzulegen, sonden auch Platzverschwendung, da dadurch ein Array mit 1'000'000 Feldern angelegt wird mit (im günstigstes Fall) Integers, was zusammen 4MB macht.
Fazit: Für die normale Deklaration für Objekte (zB mit Enumeration) reichen 10'000 Einträge locker aus.
Wenn jemand wirklich mehr als 10'000 Objekte brauch, nutzt er eh #PB_Any, da es sich höstwahrscheinlich eh um eine dynalische Deklaration handelt.
Mit #PB_Any wird ein "verbindunsloses" Element für das Objekt erstellt und du bekommst in dem Fall eine Art Adresse (Objektnummer) zurück. Diese Nummer selbst zu verwenden geht nicht.
Wenn du eine Konstante angibst, wird das jeweilige Feld in einem Array für die Elemente des Objekts belegt.
Und es wurde schon oft genug gesagt, das es nicht nur sinnfrei ist ein Gadget mit der Nummer 1'000'000 anzulegen, sonden auch Platzverschwendung, da dadurch ein Array mit 1'000'000 Feldern angelegt wird mit (im günstigstes Fall) Integers, was zusammen 4MB macht.
Fazit: Für die normale Deklaration für Objekte (zB mit Enumeration) reichen 10'000 Einträge locker aus.
Wenn jemand wirklich mehr als 10'000 Objekte brauch, nutzt er eh #PB_Any, da es sich höstwahrscheinlich eh um eine dynalische Deklaration handelt.
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Gadgetnummer über 9999 möglich ?
Ist doch ganz einfach.
Wenn Du #PB_Any nutzt, ist die zurückgebene ID eine Speicheradresse!
Nutzt Du einen fixen Wert, ist es der Index in der Gadgetliste!
Diese dürfen sich natürlich nicht überschneiden und IDs über 10000 sollten
IMHO nicht nötig sein.
Es wird sich also auch niemals ändern, es sei denn, das Prinzip der fixen
ID wird abgeschafft, aber das würde Dein Problem letztendlich auch nicht
lösen, da die Speicheradressen als solche immer noch nicht verwendbar
wären und es dann ja auch keine fixen IDs mehr gäbe.
Man müßte also #PB_Any abschaffen um höhere IDs zu nutzen, ich denke
das möchte keiner.
Außerdem wird für jede ID ein Speicher von der Größe des GadgetObjects (GadgetStructure siehe SDK)
reserviert. Bei so hohen IDs würde Du also sehr viel Speicher sinnlos verschwenden.
Es ist also nicht möglich das zu ändern und auch nicht nötig, Du solltest lediglich
in der Hilfe nochmal hier nachlesen!
Gruß
Thomas
/edit
sehe gerade STARGÅTE ist schneller, aber vielleicht ergänzen sich unsere Infos ja
Wenn Du #PB_Any nutzt, ist die zurückgebene ID eine Speicheradresse!
Nutzt Du einen fixen Wert, ist es der Index in der Gadgetliste!
Diese dürfen sich natürlich nicht überschneiden und IDs über 10000 sollten
IMHO nicht nötig sein.
Es wird sich also auch niemals ändern, es sei denn, das Prinzip der fixen
ID wird abgeschafft, aber das würde Dein Problem letztendlich auch nicht
lösen, da die Speicheradressen als solche immer noch nicht verwendbar
wären und es dann ja auch keine fixen IDs mehr gäbe.
Man müßte also #PB_Any abschaffen um höhere IDs zu nutzen, ich denke
das möchte keiner.
Außerdem wird für jede ID ein Speicher von der Größe des GadgetObjects (GadgetStructure siehe SDK)
reserviert. Bei so hohen IDs würde Du also sehr viel Speicher sinnlos verschwenden.
Es ist also nicht möglich das zu ändern und auch nicht nötig, Du solltest lediglich
in der Hilfe nochmal hier nachlesen!
Gruß
Thomas
/edit
sehe gerade STARGÅTE ist schneller, aber vielleicht ergänzen sich unsere Infos ja

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Gadgetnummer über 9999 möglich ?
Die Position eines Gadgets... lässt sich in dem Fall leider auch anders nicht lösen außer FreeGadget() und neu plazieren.STARGÅTE hat geschrieben:Was genau soll sich ändern?
Verstehe ich nicht ganz... wie sonst soll ich denn dann z.B. einen dynamischen Button abfragen bzw. bearbeiten können?STARGÅTE hat geschrieben:Mit #PB_Any wird ein "verbindunsloses" Element für das Objekt erstellt und du bekommst in dem Fall eine Art Adresse (Objektnummer) zurück. Diese Nummer selbst zu verwenden geht nicht.
Wenn nicht so, wie denn dann???
Code: Alles auswählen
Ergebnis = ButtonGadget(#PB_Any, x, y, Breite, Hoehe, Text$)
SetGadgetText(Ergebnis,"Änderung")
Ergebnis = ButtonGadget(#PB_Any, x, y, Breite, Hoehe, Text$)
Wenn #PB_Any als '#Gadget' Parameter verwendet wird, dann wird die Nummer des neuen Gadgets als 'Ergebnis' zurückgegeben. #Gadget ist die Nummer, die (später) von der EventGadget() Funktion zurückgegeben wird.
PB 6.21 | Win 11
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Gadgetnummer über 9999 möglich ?
Da hast Du recht, man kann Obejctadresse nicht einfach mit einem anderem Gadget austauschen, das geht nur mitDelle hat geschrieben:Die Position eines Gadgets... lässt sich in dem Fall leider auch anders nicht lösen außer FreeGadget() und neu plazieren.
fixen IDs. Aber erzähl mir bitte nicht, Du hast mehr als 10000 Gadgets gleichzeitig auf dem Bildschirm und die müssen alle mit
fixer ID austauschbar sein.
In anderen Sprachen erhälst Du vom OS ein handle, dem kannst du auch kein anderes Control zuordnen

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Gadgetnummer über 9999 möglich ?
Nee... aber ich generiere die Gadgets dynamisch... manche werden gelöscht, neue kommend dazu usw.ts-soft hat geschrieben:Da hast Du recht, man kann Obejctadresse nicht einfach mit einem anderem Gadget austauschen, das geht nur mit
fixen IDs. Aber erzähl mir bitte nicht, Du hast mehr als 10000 Gadgets gleichzeitig auf dem Bildschirm und die müssen alle mit
fixer ID austauschbar sein.
Ich kann natürlich nicht einfach counter+1 machen und die dann mit ButtonGadget(counter,0,0...) plazieren. Dann schmiert er ja spätestens bei 9999 auch ab...
PB 6.21 | Win 11
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Gadgetnummer über 9999 möglich ?
Code: Alles auswählen
a = ButtonGadget(#PB_Any, ....
FreeGadget(a)
a = ButtonGadget(#PB_Any, ...
Code: Alles auswählen
Dim MyGadgetArray(20000)
MyGadgetArray(0) = ButtonGadget(#PB_Any, ....
MyGadgetArray(10000) = ButtonGadget(#PB_Any, ...

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Gadgetnummer über 9999 möglich ?
Kann ich nicht nachvollziehen.Delle hat geschrieben:Die Position eines Gadgets... lässt sich in dem Fall leider auch anders nicht lösen außer FreeGadget() und neu plazieren.STARGÅTE hat geschrieben:Was genau soll sich ändern?
Wenn ich mit PB_Any ein Objekt erzeugt, so kann ich die Nummer normal verwenden wie eine "Nummer" halt.
Code: Alles auswählen
OpenWindow(#PB_Any, 0, 0, 800, 600, "WindowTitle", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
Gadget = ButtonGadget(#PB_Any, 10, 10, 300, 30, "Drücken um meine Position zu ändern.")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case Gadget
ResizeGadget(Gadget, Random(500), Random(570), #PB_Ignore, #PB_Ignore)
EndSelect
EndSelect
ForEver
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Gadgetnummer über 9999 möglich ?
Ja was denn nun? Weiter oben schreibst Du noch das es NICHT geht:STARGÅTE hat geschrieben:Wenn ich mit PB_Any ein Objekt erzeugt, so kann ich die Nummer normal verwenden wie eine "Nummer" halt.
Hier benutzt Du ja einen festen Namen "gadget", dynamisch ist das natürlich nicht:Mit #PB_Any wird ein "verbindunsloses" Element für das Objekt erstellt und du bekommst in dem Fall eine Art Adresse (Objektnummer) zurück. Diese Nummer selbst zu verwenden geht nicht.
gadget = ButtonGadget(#PB_Any, 10, 10, 300, 30, "Drücken um meine Position zu ändern.")
PB 6.21 | Win 11
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Gadgetnummer über 9999 möglich ?
Warum ist eine Variable nicht dynamisch, man kann Ihren Wert jederzeit ändern, imDelle hat geschrieben: Hier benutzt Du ja einen festen Namen "gadget", dynamisch ist das natürlich nicht:
Gegensatz zu einer Konstante, deren Wert nicht änderbar ist.
Du willst die Logik im moment nicht erfassen, vielleicht schläfste erst mal eine Nacht drüber
und morgen kommt es vielleicht von alleine

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
