Seite 1 von 2

Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 06:04
von 3dhubiflieger
Hallo, ich wollte mal fragen ob es möglich ist mit einer Funktion die allgemeine Anzahl der erstellten Gadgets in einem Fenster zu ermitteln. Habe da nix gefunden.


Gruss Kevin

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 09:06
von RSBasic
http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb (nur für Windows)
Du musst nur eine Zählvariable hinzufügen, dann hast du am Ende die Anzahl.

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 11:31
von ts-soft
Crossplattform, siehe auch http://www.purebasic.fr/english/viewtop ... 52#p231052

Code: Alles auswählen

EnableExplicit

ImportC ""
  PB_Gadget_Objects
  PB_Object_EnumerateStart   (*Object)
  PB_Object_EnumerateNext   (*Object, *id)   
EndImport    

Macro ForEachObject(obj,cursor)
  PB_Object_EnumerateStart(obj)
  While PB_Object_EnumerateNext(obj,@cursor)
EndMacro
  
Macro NextObject :   Wend : EndMacro

If OpenWindow(0, 100, 100, 600, 600, "Count gadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ButtonGadget(0, 10, 10, 200, 20, "Standard Button")
  ButtonGadget(1, 10, 40, 200, 20, "Left Button", #PB_Button_Left)
  ButtonGadget(2, 10, 70, 200, 20, "Right Button", #PB_Button_Right)
  ButtonGadget(3, 10,100, 200, 60, "Multiline Button  (longer text gets automatically wrapped)", #PB_Button_MultiLine)
  ButtonGadget(99, 10,170, 200, 20, "Toggle Button", #PB_Button_Toggle) 
  ButtonGadget(-1, 10,210, 200, 20, "Toggle Button", #PB_Button_Toggle) 
  
  Define count = 0, id, event
  ForEachObject(PB_Gadget_Objects, id)     
  Debug id
  Debug GadgetType(id)
  Debug "-----------"
  count + 1
  NextObject
  Debug ""
  Debug "Gadgets: " + count
  
  Repeat
    event = WaitWindowEvent()
  Until event = #PB_Event_CloseWindow
EndIf
End

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 11:44
von NicTheQuick
Cool :allright:

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 14:00
von Shardik
ts-soft hat geschrieben:Crossplattform
Wie ich diese pauschalen und ungetesteten Aussagen liebe... :mrgreen:

Unter Windows mit 32 Bit (z.B. Windows XP SP3 und Windows 7 SP1) läuft es so zumindest nicht, denn dafür ist beim Import-Block noch folgende CompilerIf-Abfrage nötig:

Code: Alles auswählen

CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  Import ""
CompilerElse
  ImportC ""
CompilerEndIf
  PB_Gadget_Objects
  PB_Object_EnumerateStart(*Object)
  PB_Object_EnumerateNext(*Object, *id)   
EndImport

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 14:06
von NicTheQuick
Naja, 32 Bit ist ja mittlerweile auch so gut wie ausgestorben. Und XP will eh keiner mehr unterstützen außer für seine kleinen privaten Projekte. :wink:
Ansonsten: Ja, hast Recht.

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 14:09
von RSBasic
NicTheQuick hat geschrieben:Naja, 32 Bit ist ja mittlerweile auch so gut wie ausgestorben.
Schön wärs. Leider gibt es noch viel zu viele reine x86-Anwendungen ohne 64 Bit-Unterstützung.
NicTheQuick hat geschrieben:Und XP will eh keiner mehr unterstützen außer für seine kleinen privaten Projekte. :wink:
Es gibt leider viele Unternehmen, die XP heute noch einsetzen. Ich kenne da einige. /:->

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 15:37
von ts-soft
Ist schon shit, das PB für x86 immer noch StdCall verwendet, das macht den Code dann so unsympathisch :mrgreen:

Und Unternehmen, die sich nach so viel Jahren, immer noch kein Upgrade leisten können, sind ja eh schon fast Pleite :mrgreen:

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 16:47
von Shardik
NicTheQuick hat geschrieben:Naja, 32 Bit ist ja mittlerweile auch so gut wie ausgestorben. Und XP will eh keiner mehr unterstützen außer für seine kleinen privaten Projekte. :wink:
In welcher Welt lebt ihr eigentlich? Laut der aktuellsten NetMarketShare-Studie von Mai 2016 setzen noch 10,09% der Anwender Windows XP ein (die allermeisten dürften die 32 Bit Version nutzen), während nur 1.79% Linux einsetzen (wobei ein nicht unbeträchtlicher Anteil davon auf Althardware mit 32 Bit laufen dürfte). Alleine der Anteil an 32 Bit Windows-XP-Anwendern ist also mindestens 6x so groß wie der aller Linux-Anwender... :lol:

Zugegebenermaßen setzen die meisten Anwender mit neueren Windows-Versionen die 64 Bit Version ein, was aber nicht bedeutet, dass sie keine 32 Bit Software mehr einsetzen (müssen).
ts-soft hat geschrieben:Und Unternehmen, die sich nach so viel Jahren, immer noch kein Upgrade leisten können, sind ja eh schon fast Pleite :mrgreen:
Diese Aussage kann eigentlich nur ein Hobby-Programmierer treffen... :mrgreen:

Wir haben etwa 2500 PCs mit Windows 8.1 64 Bit im Einsatz. Allerdings muß ich noch eine ganze Reihe von Altanwendungen pflegen, die nur mit 32 Bit kompiliert werden können, weil sie noch alte DLLs von Microsoft oder Drittherstellern verwenden oder alte 32 Bit-Treiber, von denen es keine 64-Bit Version gibt und nie geben wird. Und ich schätze einmal stark, dass dies kein Einzelfall ist... :wink:

Re: Anzahl der Gadgets ermitteln ?

Verfasst: 01.06.2016 17:18
von ts-soft
Shardik hat geschrieben:
ts-soft hat geschrieben:Und Unternehmen, die sich nach so viel Jahren, immer noch kein Upgrade leisten können, sind ja eh schon fast Pleite :mrgreen:
Diese Aussage kann eigentlich nur ein Hobby-Programmierer treffen... :mrgreen:
Der im IT-Support arbeitet.
Shardik hat geschrieben:Wir haben etwa 2500 PCs mit Windows 8.1 64 Bit im Einsatz. Allerdings muß ich noch eine ganze Reihe von Altanwendungen pflegen, die nur mit 32 Bit kompiliert werden können, weil sie noch alte DLLs von Microsoft oder Drittherstellern verwenden oder alte 32 Bit-Treiber, von denen es keine 64-Bit Version gibt und nie geben wird. Und ich schätze einmal stark, dass dies kein Einzelfall ist... :wink:
Und was sagt das aus? 32-Bit Altanwendungen laufen ja wohl auch unter 64-Bit OS und PB-Anwendungen werden es wohl kaum sein, die noch alte DLLs von Microsoft und Drittherstellern nutzen. Kein Grund, nicht Upzugraten. Bei mir nutzen die meisten Anwender/Kunden (sind etwas viel mehr als 2500 :wink: ) überwiegend Windows 7 Enterprise, aber niemand Windows XP, weil damit würde er nicht in eine Domäne kommen. Ca. 20 - 30 % nutzen noch Lotus :) und die lassen sich leider nicht so leicht umstellen/migrieren, aber läuft ja unter Windows 7 Enterprise problemlos.

Egal, wenn PB für Windows x86, CDECL nutzen würde, würden die Compilerdirektiven wegfallen können, der Rest läuft mit ImportC.