Seite 1 von 3
over 10000
Verfasst: 18.02.2009 15:24
von Broncbuster
Hallo möchte dynamische Gadgets erstellen. Ab 10000 kommt aber eine Fehlermeldung. Kann mir jemand sagen wie ich diese elegant umschiffen kann?
Hier ein kleiner Beispielcode:
Code: Alles auswählen
Enumeration
#Save
EndEnumeration
Global Kan1Gadget
Global Kan2Gadget
Kan1Gadget = 1000
Kan2Gadget = 10000
Procedure OpenSave()
ExamineDesktops()
If IsWindow(#Save) = 0
OpenWindow(#Save, 50, 5, 400, 230, "Info", #PB_Window_SystemMenu | #PB_Window_TitleBar )
TextGadget(Kan1Gadget,5,5,390,30,"Ich bin " + Str(Kan1Gadget), #PB_Text_Center )
Kan1Gadget = Kan1Gadget + 1
TextGadget(Kan1Gadget,5,35,390,30,"Ich bin " + Str(Kan1Gadget), #PB_Text_Center )
TextGadget(Kan2Gadget,5,65,390,30,"Ich bin " + Str(Kan2Gadget), #PB_Text_Center )
Kan2Gadget = Kan2Gadget + 1
TextGadget(Kan2Gadget,5,95,390,30,"Ich bin " + Str(Kan2Gadget), #PB_Text_Center )
EndIf
EndProcedure
OpenSave()
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
End
Verfasst: 18.02.2009 15:28
von STARGÅTE
Jo nutze die Dynamische Konstante #PB_Any
Dann gibt dir TextGadget, usw. eine GadgetNummer aus, diese kannst du dann zB in einer LinkedList alle Abspeichern ... um sie später weiter zu nutzen ...
Verfasst: 18.02.2009 15:42
von KeyKon
Ich bezweifle auch stark das du 10k Gadgets verwendest...
Man darf nie vergessen das PB immer Speicher für soviele Gadgets reserviert wie die Nummer des höchsten Gadgets is...
Verfasst: 18.02.2009 17:20
von Andesdaf
mal ehrlich wer braucht 10000 gadgets?
Aber sonst, bitte wie von Stargate vorgeschlagen, #PB_any nutzen.
Verfasst: 19.02.2009 17:25
von Broncbuster
Es geht mir nicht unbedingt um 10000 Gadgets die ich verbraten möchte, sondern nur darum wie ich die Sache ohne Fehlermeldung durchbringe. Das gleiche passiert ja auch bei einem Array, das irgendwann per ReDim Anweisung die 10000 Zahl erreicht.
Verfasst: 19.02.2009 17:38
von ts-soft
Wo ist das Problem?
Code: Alles auswählen
Enumeration
#Save
EndEnumeration
Global Kan1Gadget
Global Kan2Gadget
Kan1Gadget = 1000
Kan2Gadget = 10000
Global Dim Kan2Gadget(20000)
Procedure OpenSave()
ExamineDesktops()
If IsWindow(#Save) = 0
OpenWindow(#Save, 50, 5, 400, 230, "Info", #PB_Window_SystemMenu | #PB_Window_TitleBar )
TextGadget(Kan1Gadget,5,5,390,30,"Ich bin " + Str(Kan1Gadget), #PB_Text_Center )
Kan1Gadget = Kan1Gadget + 1
TextGadget(Kan1Gadget,5,35,390,30,"Ich bin " + Str(Kan1Gadget), #PB_Text_Center )
Kan2Gadget(Kan2Gadget) = TextGadget(#PB_Any,5,65,390,30,"Ich bin " + Str(Kan2Gadget), #PB_Text_Center )
Kan2Gadget = Kan2Gadget + 1
Kan2Gadget(Kan2Gadget) = TextGadget(#PB_Any,5,95,390,30,"Ich bin " + Str(Kan2Gadget), #PB_Text_Center )
EndIf
EndProcedure
OpenSave()
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
End
Die Größe des Arrays könnte man noch optimieren oder auch dynamisch anpassen
Gruß
Thomas
Verfasst: 19.02.2009 17:59
von Broncbuster
Danke Thomas,
War genau die Zeile die ich gesucht habe. [/code]
Verfasst: 19.02.2009 19:36
von Andesdaf
mit PB_Any geht's...

Verfasst: 21.02.2009 19:03
von Broncbuster
War wohl nicht mit dem Global Dim Kan2Gadget(20000).
Habe im vorhergehenden Beispielcode ein Fehler gemacht und mit Kan2Gadget ja gar kein Gadget erstellt.
Wie gehabt, over 10000 gibt es eine Fehlermeldung.
Code: Alles auswählen
Enumeration
#Save
EndEnumeration
Global Kan1Gadget
Global Kan2Gadget
Kan1Gadget = 1000
Global Dim Kan2Gadget(20000)
Kan2Gadget = 12000
Procedure OpenSave()
ExamineDesktops()
If IsWindow(#Save) = 0
OpenWindow(#Save, 50, 5, 400, 230, "Info", #PB_Window_SystemMenu | #PB_Window_TitleBar )
TextGadget(Kan1Gadget,5,5,390,30,"Ich bin " + Str(Kan1Gadget), #PB_Text_Center )
Kan1Gadget = Kan1Gadget + 1
TextGadget(Kan1Gadget,5,35,390,30,"Ich bin " + Str(Kan1Gadget), #PB_Text_Center )
TextGadget(Kan2Gadget,5,35,390,30,"Ich bin " + Str(Kan2Gadget), #PB_Text_Center )
Kan2Gadget = Kan2Gadget + 1
TextGadget(Kan2Gadget,5,35,390,30,"Ich bin " + Str(Kan2Gadget), #PB_Text_Center )
EndIf
EndProcedure
OpenSave()
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
End
Wie könnte ich einem StringGadget das per #PB_Any erstellt wird, gleich noch eine Schriftart, Font usw. mitgeben? Per GadgetID muß ich ja erstmal active setzen um die GadgetID rauszubekommen oder?
Vielleicht stehe ich auch wieder mal auf dem...
Verfasst: 21.02.2009 19:08
von Kaeru Gaman
yap, tust du.
das erzeugen per #PB_Any gibt das Handle zurück, das IST die GadgetID, das kannst du überall in andere funktionen einsetzen.