Seite 2 von 2

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 12.03.2018 16:08
von silbersurfer
Super RSBasic,
das funzt, hatte da in der tat den Paht außer acht gelassen......
jetzt gleicht es dem ExplorerListGadget, nur das es wesendlich schneller ist danke....... :praise:

Gruß Silbersurfer

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 12.03.2018 16:15
von Fluid Byte
edel hat geschrieben:Ich habe keinen Vergleich. Unter macos oder Linux mag es schneller gehen oder eben auch nicht. Ich weiss es nicht. Das standardmäßige Befüllen eines Listviews unter Windows ist aber nun mal sehr langsam.
Du bist mit Abstand der größte Dummschwätzer den ich seit langem gesehen habe ...

Warum das Befüllen des Gadgets länger dauert kann viele Gründe habe:

- Netzwerk-Laufwerk
- externes Laufwerk im Ruhezustand
- sehr hohe Anzahl an Dateien (1000+)

Der Trick mit #WM_SETREDRAW funktioniert ausschließlich wenn das Gadget mit extrem vielen Objekten befüllt wird. Was aber der Grund für die Verlangsamung ist weiß nur silbersurfer, alles andere ist Spekulation.

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 12.03.2018 16:26
von ¯\_(ツ)_/¯
Hallo Fluid Byte :) ,

wir haben uns alle lieb und wir sind eine tolle Community. Also versuche bitte etwas freundlicher zu sein.
Danke Fluid Byte, ich wünsche dir einen schönen Tag. :)

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 12.03.2018 17:11
von silbersurfer
@Fluid Byte
Was aber der Grund für die Verlangsamung ist weiß nur silbersurfer, alles andere ist Spekulation.
natürlich habe externe laufwerke die erst wieder aufwachen müßen, aber trotz alledem erklärt sich mir nicht das langsame verhalten von ExplorerList...
dieses passiert z.b auch auf meiner internen HDD bei einigen Verzeichnissen, im gegenzug das selbst erstellte ListIconGadget mit ProgrammIcon / DatenTypen Extraction
jeder einzelnen Datei, ist bei weiten wesendlich schneller, und hat auch nicht den beschrieben Nebeneffekt wenn Daten kopiert werden.

Alles in allem Fluid Byte, kann ich leider nicht genau sagen was der Grund dafür ist.

Gruß Silbersurfer

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 12.03.2018 19:38
von Fluid Byte
Wenn es in den von mir beschrieben Szenarien nicht langsamer wird dann hat es nichts mit Windows zu tun sondern liegt an einem schlecht optimierten Gadget in PureBasic. Genau das ist der Grund warum ich edel einen Dummschwätzer genannt habe. Gut, dann ist ja alles geklärt.
¯\_(ツ)_/¯ hat geschrieben:Hallo Fluid Byte :) ,
Hallo.
¯\_(ツ)_/¯ hat geschrieben:wir haben uns alle lieb ...
Nein.
¯\_(ツ)_/¯ hat geschrieben:... und wir sind eine tolle Community
Meistens, ja.
¯\_(ツ)_/¯ hat geschrieben:Also versuche bitte etwas freundlicher zu sein.
Warum sollte ich das tun wenn Leute Scheiße erzählen? Kleiner Tipp noch, versuche nicht Mitlgieder zu belehren die seit 12 Jahren hier sind. Danke.
¯\_(ツ)_/¯ hat geschrieben:Danke Fluid Byte, ich wünsche dir einen schönen Tag. :)
Ebenfalls.

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 12.03.2018 23:08
von mk-soft
Fluid Byte hat geschrieben:Wenn es in den von mir beschrieben Szenarien nicht langsamer wird dann hat es nichts mit Windows zu tun sondern liegt an einem schlecht optimierten Gadget in PureBasic. Genau das ist der Grund warum ich edel einen Dummschwätzer genannt habe. Gut, dann ist ja alles geklärt.
Da muss ich leider Edel recht geben. Es liegt and MS-Listview (ListIconGadget). Dieses führt bei jeden hinzufügen eines Eintrages ein Redraw durch.
Das kann oder muss man auch unter anderen Sprachen selber Unterdrücken.

Unter Mac ist das füllen etwa drei mal so schnell als bei Windows.

Die einfachste Methode ist es beim füllen des Gadgets diesen zu verstecken. Dann geht das füllen etwa 4 mal so schnell.

Code: Alles auswählen

If OpenWindow(0, 100, 100, 600, 400, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0, 0, 0, 600, 360, "ID", 100, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
  ButtonGadget(1, 5,365, 120, 25, "Start")
  AddGadgetColumn(0, 1, "Name", 250)
  Repeat
    Event = WaitWindowEvent()
    Select Event
      Case #PB_Event_Gadget
        If EventGadget() = 1 And Not Start
          start = 1
          starttime = ElapsedMilliseconds()
          HideGadget(0, 1)
          For i = 1 To 40000
            AddGadgetItem(0, -1, "" + i + #LF$ + "Eintrag")
          Next
          HideGadget(0, 0)
          MessageRequester("Zeit", "Fertig in " + Str(ElapsedMilliseconds() - starttime) + " ms")
          start = 0
        EndIf
    EndSelect
    
  Until Event = #PB_Event_CloseWindow
EndIf
Die anderen Faktoren warum es langsam ist liegen natürlich auch wie Einträge zusammen gestellt werden. Netzwerke haben zum Beispiel auch mal ein Aussetzer.

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 13.03.2018 14:22
von Fluid Byte
mk-soft hat geschrieben:Da muss ich leider Edel recht geben.
Dann habt ihr zu zweit keine Ahnung, kann ich mit leben. Dein Beispiel ist realitätsfremd und hat weder etwas mit silbersurfers Problem zu tun noch mit der Behauptung von edel es liege an Windows. Ironischerweise hast du mit deinem Code bestätigt was ich bereits mehrfach geschrieben habe. Es liegt nicht an Windows sondern an PureBasic bzw. am Programmierer. Windows selbst hat damit keine Probleme.

Wenn jemand also keine Erfahrung mit API-Programmierung unter Windows hat, geschweige denn vom Betriebssystem selbst sollte man sich davor hüten solche unqualifizierten Aussagen zu machen und es pauschal auf das OS zu schieben.

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 13.03.2018 18:25
von mk-soft
Hallo Querschläger,

Das es sich nicht nur an den Gadget liegt habe ich bereits geschrieben. Das man diese noch weiter optimieren kann ist auch bekannt. Das es sich nur um ein Beispiel handelt sieht man auch.
Wenn jemand also keine Erfahrung mit API-Programmierung unter Windows hat, geschweige denn vom Betriebssystem selbst sollte man sich davor hüten solche unqualifizierten Aussagen zu machen und es pauschal auf das OS zu schieben
Na gut das ich unqualifiziert bin um irgendwelche Aussagen zu tätigen. Keine Ahnung was ich in den letzten 35 Jahren gemacht habe,
oder womit seit über 20 Jahren mein Geld verdiente.

Werde versuchen meine unqualifizierten Aussagen nicht mehr kund zu geben. :|

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 13.03.2018 21:46
von hjbremer
Hallo Leute
was soll da gemecker übereinander. Wir sollten alle an einem Strang ziehen, damit PB besser gemacht wird. Es fehlt so vieles.

Und wir alle wissen, das das ListIcongadget in PB nicht optimal ist, weil unsere verehrten PureBasic Erfinder die Befehle nicht zu Ende gedacht haben. Einerseits weil PB für 3 Betriebssysteme gedacht ist, andererseits mangelt es wohl an Zeit.

Also müssen wir es selbst regeln. Die einfachste Möglichkeit ist nun mal Redraw aus zuschalten. Wem es dann immer noch zu langsam ist muss LVN_GETDISPINFO benutzen. Aber Letzteres ist nun mal aufwendiger und bei den heutigen Rechnern häufig nicht nötig. Ich benutze es erst ab 10-20000 Einträgen.

Im übrigen HideGadget gibt es halt wegen den 3 Systemen, und mich persönlich stört das sichtbare kurze Flackern beim verschwinden und wieder sichtbar werden.

Zu gutem Schluß, das ExplorerListgadget ist ...... naja es funktioniert. Nur leider ist bekanntlich ein eigenes bauen etwas aufwendig.

Und nun mit Freude ans nächste Problem.
Bei mir ist es die Map Bibliothek. Habe, man glaubt es kaum, noch nie damit gearbeitet. Aber es wird. Der Glaube hilft.

Edit: der Glaube hat nicht geholfen :mrgreen:

Re: ExplorerListGadget einlesen teilweise langsam ?

Verfasst: 14.03.2018 13:48
von Fluid Byte
mk-soft hat geschrieben:Na gut das ich unqualifiziert bin um irgendwelche Aussagen zu tätigen. Keine Ahnung was ich in den letzten 35 Jahren gemacht habe,
oder womit seit über 20 Jahren mein Geld verdiente.
Ich meinte damit edel, nicht explizit dich. Allerdings bin ich schockiert das du auf den "Windows-Bashing"-Zug aufgesprungen bist.

Es ist absurd darüber weiter zu diskutieren denn die Aussage "es liegt an Windows" ist nun mehrfach widerlegt worden und sein Problem ist gelöst.