ExplorerListGadget einlesen teilweise langsam ?

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

ExplorerListGadget einlesen teilweise langsam ?

Beitrag von silbersurfer »

Hallo Leute,
ich Schreibe an einen Datei-Manger @TotalCommander, und bin auch schon sehr zufrieden soweit.
Mir ist allerdings aufgefallen, dass in manchen Ordner das einlesen der Dateien sehr lange dauert (ein paar Sekunden friert das einlesen ein).
Ist diese erscheinug schon bekannt, und wenn ja gibt es dafür abhilfen ?

Gruß Silbersurfer
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag von edel »

Unter Windows dauert es tatsaechlich laenger. Abhilfe gibt es hier: https://msdn.microsoft.com/en-us/librar ... s.85).aspx
Hier im Forum muessten sich auch ein paar Beispiele finden lassen.
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag von silbersurfer »

Danke edel,
aber leider bin ich kein C++ User, und so wie das aussieht müßte man das über WinApi und @callback lösen wo
ich leider noch keine große Erfahrung mit habe.

Mir fehlt da der Ansatz
struct RndItem
{
int iIcon; // Bitmap assigned to this item.
UINT state; // Item state value.
TCHAR Title[BUFFER_SIZE]; // BUFFER_SIZE is a user-defined macro value.
TCHAR SubText1[BUFFER_SIZE]; // Text for the label of the first sub-item.
TCHAR SubText2[BUFFER_SIZE]; // Text for the label of the second item.
};
ist dann wohl die Strutur, vieleicht kommen ja noch die WinApi Profis und bringen Licht in meinen Schatten :D

gruß Silbersurfer
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag von uweb »

Wenn ich "Virtual List-View" aus edel's Tipp zusammen mit "PureBasic" in Google eingebe finde ich u.a. :

http://www.purebasic.fr/german/viewtopic.php?t=19105 - Das trifft genau genau Deine Frage; ist aber aus 2009.
http://www.purebasic.fr/english/viewtopic.php?p=516617 - Da geht es eigentlich um das Scrollen via Mausrad. Aber es ist ein einfaches Beispiel für einen Virtual List-View das so auch unter PB 5.62 läuft.

Da gibt es aber noch mehr.
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:Unter Windows dauert es tatsaechlich laenger.
Was hat das mit Windows zu tun?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag von RSBasic »

@silbersurfer
Wenn du dein ExplorerListGadget mit ListIconGadget selber erstellst, kannst du mit #WM_SETREDRAW das Hinzufügen deutlich beschleunigen.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag von Bisonte »

Wird es nicht schneller, wenn man das Neuzeichnen während des Einlesen kurzfristig abschaltet ?

Code: Alles auswählen

SendMessage_(GadgetID(#Gadget), #WM_SETREDRAW, #False, 0)
  ; Einlesen
  SendMessage_(GadgetID(#Gadget), #WM_SETREDRAW, #True, 0)
Edit : Arg zu langsam ;)
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag von edel »

Fluid Byte hat geschrieben:
edel hat geschrieben:Unter Windows dauert es tatsaechlich laenger.
Was hat das mit Windows zu tun?
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.
Benutzeravatar
silbersurfer
Beiträge: 174
Registriert: 06.07.2014 12:21

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag von silbersurfer »

Hallo Leute,
erstmal dank für die vielen Antworten, doch leider mußte ich gestern feststellen, dass das ExplorerListGadget völlig unbauchbar für meine zwecke ist.
nach einbinden meiner Kopierroutine brach das Gadget völlig zusammen (je mehr dateien ich kopierte) um so mehr flackerte das Gadget, spürbar lange dauerte
dieses flackern bis dann endlich die Dateien im Gadget sichtbar wurden.
das kann nicht im sinne des Erfinders sein.

@RSBasic :allright:
Wenn du dein ExplorerListGadget mit ListIconGadget selber erstellst, kannst du mit #WM_SETREDRAW das Hinzufügen deutlich beschleunigen.
genau das habe ich jetzt gemacht RSBasic, es ist deutlich schneller und so nun auch tauglich für einen Dateimanager :)

eine frage gleich dazu, kann man irgendwie das Kontextmenü vom Explorer im einen ListIconGadget nutzen oder nutzbar machen?
das wäre cool.
Icon und Dateitypen habe ich schon eingebunden (Optisch kein unterschied mehr zum ExplorerListGadget)
nur das Menü fehlt da noch

Gruß Silbersurfer
Intel Quad Core 3,2 Ghz - GTX 1060 - BlitzBasic Plus 1.48 , PureBasic 5.70 LTS / Aktuelles Projekt PureCommander
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ExplorerListGadget einlesen teilweise langsam ?

Beitrag von RSBasic »

silbersurfer hat geschrieben:eine frage gleich dazu, kann man irgendwie das Kontextmenü vom Explorer im einen ListIconGadget nutzen oder nutzbar machen?
http://www.purebasic.fr/german/viewtopi ... 44#p345444

Du musst nur den Pfad in deinem ListIconGadget selber ermitteln/erstellen und diesen an die jeweilige Funktion übergeben.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten