Seite 2 von 4
Verfasst: 09.03.2009 16:15
von ts-soft
Mal nen Tip am Rande:
wenn API, dann möglichst komplett API, also erstellen des Controls und
auswerten im Callback,
wenn PB, dann möglichst nur PB, es sei denn die Funktionalität fehlt.
Das Mixen kann zu Fehlfunktionalität, wenn nicht jetzt, evtl. mit der nächsten
Version von PB, führen.
Geschwindigkeitsunterschiede sind mehr als unwahrscheinlich, da PB intern
meist auch nichts anderes macht, als die API aufrufen.
Selbst das Aufrufen der API per ASM bringt da meist keine Unterschiede, die
irgendwie Meßbar wären

Verfasst: 09.03.2009 17:05
von hjbremer
sehe ich völlig anders !!!
und FehlFunktionalität siehe PB 3.9x zu 4.0 und 4.2 zu 4.3 und was hat das mit Api zu tun ?
Verfasst: 09.03.2009 17:22
von edel
ts-soft hat geschrieben:
Geschwindigkeitsunterschiede sind mehr als unwahrscheinlich, da PB intern
meist auch nichts anderes macht, als die API aufrufen.
Selbst das Aufrufen der API per ASM bringt da meist keine Unterschiede, die
irgendwie Meßbar wären

Das braucht man nicht mal messen. PB hat in diesem Fall gar keine
Chance gegen die API Variante. API ist gerade bei grossen Listen
vorzuziehen. Das Argument mit dem Mixen ist auch an den Haaren
herbeigezogen, es sei denn Fred benutzt in der naechsten Version
ein anderes GUI Framework, was recht unwahrscheinlich ist.
Verfasst: 09.03.2009 17:42
von ts-soft
> Das Argument mit dem Mixen ist auch an den Haaren herbeigezogen
Dann lies mal mehr im engl. Bugforum.
Z.B. das Windows-Problem mit den Gridlines wird PB-Intern gelöst, so das
es hier Einschränkungen bezüglich der API-Nutzung gibt.
Kann das jetzt aber im Bug-Forum nicht mehr finden, da Fehler durch
mixen von API und nativen PB-Befehlen keine Bugs darstellen und der
Beitrag dort inzwischen gelöscht oder verschoben wurde.
> Das braucht man nicht mal messen. PB hat in diesem Fall gar keine Chance gegen die API Variante
Warum sollte PB da intern was anderes nutzen?
Verfasst: 09.03.2009 19:22
von edel
PB benutzt hier ein ganz anderen Befehl. Aber extra fuer dich :
Code: Alles auswählen
DisableDebugger
Procedure main()
Protected win
Protected lv
Protected event
Protected i
Protected item
Protected time
Protected count
win = OpenWindow(0,#PB_Ignore,#PB_Ignore,304,304,"Test")
lv = ListIconGadget(0,2,2,200,300,"Test",200,#PB_ListIcon_MultiSelect|#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
ButtonGadget(1,205,2,75,23,"API Test")
TextGadget(2,205,32,75,23,"Time : ")
ButtonGadget(3,205,57,75,23,"PB Test")
TextGadget(4,205,87,75,23,"Time : ")
For i = 0 To 10000
AddGadgetItem(0,-1,"null")
Next
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
If EventGadget() = 1
time = ElapsedMilliseconds()
Repeat
item = SendMessage_(lv,#LVM_GETNEXTITEM,item,#LVNI_SELECTED)
Until item = -1
SetGadgetText(2,"Time : " + Str(ElapsedMilliseconds() - time))
item = 0
EndIf
If EventGadget() = 3
time = ElapsedMilliseconds()
count = CountGadgetItems(0) - 1
For i = 0 To count
item = GetGadgetItemState(0,i)
Next
SetGadgetText(4,"Time : " + Str(ElapsedMilliseconds() - time))
item = 0
EndIf
EndIf
Until event = #PB_Event_CloseWindow
EndProcedure:main()
Verfasst: 09.03.2009 19:28
von php-freak
Naja jetzt funktioniert es ja! Danke an euch alle!
Verfasst: 09.03.2009 20:00
von ts-soft
> Aber extra fuer dich :
Soll das ein Witz sein? 0 - 15 ms Unterschied
Ich glaubs ja nicht
Und wenn ich für die API Routine auch For Next nehme ist der Unterschied weg

Verfasst: 09.03.2009 20:23
von php-freak
Um noch einmal kurz aufs Thema zu kommen:
Wie funzt das ganze für die 2. Spalte? Zum reinschreiben musste ich Chr(10) verwenden!
Verfasst: 09.03.2009 20:27
von ts-soft
siehe dritter optionaler Parameter (ist Deine Hilfe kaputt?)
Verfasst: 09.03.2009 20:44
von edel
ts-soft hat geschrieben:> Aber extra fuer dich :
Soll das ein Witz sein? 0 - 15 ms Unterschied
Ich glaubs ja nicht
Und wenn ich für die API Routine auch For Next nehme ist der Unterschied weg

Wenn du 3 Items markierst, wird die Schleife 4 mal durchlaufen, dann
abgebrochen. Mit PB durchlaeufst du immer alle Items.
aber von mir aus kannste dann auch noch nen Delay(1000) reinpacken,
damit es mit API dann noch langsamer ist ...
