ExplorerListGadget einlesen teilweise langsam ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
¯\_(ツ)_/¯
Beiträge: 141
Registriert: 18.08.2017 09:35

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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. :)
Bild
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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. :|
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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:
Zuletzt geändert von hjbremer am 14.03.2018 16:49, insgesamt 1-mal geändert.
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag 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.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Antworten