Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#4

Re: Neue Klasse: TFileTypeInfo

  Alt 15. Aug 2003, 14:47
SHGetFileInfo('C:\', ....); ist vollkommen ausreichend. Man muß also einen gültigen Pfad bzw. FileSystem Object angeben.

Zitat:
Wie auch immer, mal schauen, ob ich das so machen werde. Ich werd zunächst mal einige Tests machen, um die Performance & die Speicherauslastung zu pürfen, wobei, wenn es so funktioniert, wie ich denke, deine Methode in beiden Punkten gewinnen wird (außer vielleicht in wenigen Spezialfällen, wie beispielsweise oben angesprochenen Fall mit 1000 Dateien des gleichen Typs).
Es ist keine Frage der Performance sondern eine Frage der Resourcen. Icons so wie du sie benutzt sind Objecte des GDI's, ImageListen sind Objecte des Kernels. Der Unterschied besteht darin das bei 1000 Extensionen in deiner Methode 1000 GDI Objecte nötig sind. Bei einer ImageList ist nur 1 GDI Object nötig, nämlich die Bitmap der ImageList. Aber im Grunde nutzt das ImageList API noch nichtmal dieses 1 Bitmap GDI Object, sondern nutzt seine eigenen Funktionen um den Bitmap Speicher zu verwalten. Erst wenn man ein Icon oder Bitmap zum Zeichnen anfordert existiert dieses GDI Object. Gleich nach dem zeichnen wird es sofort zerstört und freigegeben. Somit sind ImageList enorm Resourcenschonende Objecte. Dadurch das sie viele gleichartige Bilder als ein Bild verwalten (sprich Größe, Farbanzahl sind gleich) sind sie auch noch schneller.

Das eigentlich langsamme an SHGetFileInfo() ist aber der Prozess des Heraussuchens der Infomationen zur Extension aus der Registry. Diesen könntest du mit einer eigenen Liste beschleunigen. ABER! eine Veränderung der Extensionsregistrierung würdest du dann nicht mehr mitbekommen. Deswegen sucht SHGetFileInfo() auch immer wieder in der Registry statt selber zwischen zuspeichern.

Gruß Hagen
  Mit Zitat antworten Zitat