Komfortabler Dateimanager mit vielen Funktionen

Es geht voran

By Sven on 17.09.2008 - 10:00 in Alltägliches

Kurzer Zwischenbericht von der Archiver-Front. Angefangen hatte ich mit dem ARJ, da dieser recht kompakt ist und ich den Quellcode schon vor einiger Zeit für ein besseres Verständnis etwas umformatiert hatte. Zuerst wollte ich ja nur die Fehlerausgaben präzisieren sowie auf lange Pfade umstellen. Ziemlich schnell merkte ich aber, dass in den Archiver eine Menge Einsparpotential bzgl. der Codezeilen liegt.

Die einzelnen Archivobjekte (ARJ, SQX, …) sind von einem allgemeinen Archivobjekt abgeleitet, das allgemeine Verwaltungsfunktionen (z.B. für Erstellung und Sortierung von Dateilisten) für alle Archiver implementiert. Die einzelnen Archivoperationen werden aber größtenteils von jedem Archiver selbst implementiert. Beim Hinzufügen von Dateien zu einem Standardarchiv sind das z.B. folgende Aufgaben:

  1. Logging starten 
  2. Sichern der ZoneID des Archivs (falls vorhanden)
  3. Erstellen von Dateilisten
  4. Auflisten der im Archiv enthaltenen Dateien
  5. Erstellung einer neuen Archivdatei
  6. Kopieren des SFX-Stubs (falls vorhanden) in die neue Archivdatei
  7. Unberührte Dateien aus dem alten Archiv in das neue Archiv kopieren
  8. Neue Dateien in das neue Archiv komprimieren
  9. Altes Archiv löschen
  10. Neues Archiv auf den bisherigen Archivnamen umbenennen
  11. ZoneID des Archivs wiederherstellen (falls vorhanden)
  12. Optional einen erweiterten Vergleich zwischen originalen und komprimierten Daten durchführen (ZIP und SQX)
  13. Logging beenden

Wenn man sich die Liste so anschaut, dann sind eigentlich nur die Punkte 4 und 8 vom jeweiligen Archiver abhängig. Ähnliche Abläufe ergeben sich auch für alle anderen Archivfunktionen (z.B. Entpacken und Löschen).

Es lag also nahe, die grundlegenden Funktionen in das allgemeine Archiverobjekt zu stecken und nur die speziellen in das für das jeweilige Format zuständige. Die einzelnen Archiver-Dlls werden dadurch zwar nicht kleiner, allerdings sind die allgemeinen Funktionen nur noch einmal vorhanden. Das erleichtert die Codepflege und die Fehlerbehebung erheblich.

Mittlerweile bin mit ARJ, SQX und ZIP so ziemlich durch. Mit den anderen Archivern wird es jetzt vermutlich etwas einfacher werden, da die allgemeinen Funktionen jetzt alle implementiert sind.

Es gibt 11 Kommentare zu diesem Beitrag

Trackback URL | RSS-Feed für Kommentare

  1. Rolf Lanzerath sagt:

    Das hört man gerne. Schön, daß Du so gut voran kommst. Sind die von Dir vorgenommenen Änderungen eigentlich noch für eine SC12-Version gedacht oder arbeitest Du jetzt schon am SC 13 ?

    Gruß Rolf

  2. Sven sagt:

    Ich denke, dass die Änderungen erst in den SC13 einfließen. Schließlich müssen sie vorher auch noch intensiv getestet werden.

  3. hanni sagt:

    dann warten wir jetzt schon mal auf die beta 😉

  4. mathepauker sagt:

    »Die einzelnen Archiver-Dlls werden dadurch zwar nicht kleiner« – Ich habe nicht viel Ahnung von Programmierung. Aber warum wird so einen DLL nicht kleiner, wenn man etwas weglässt?

  5. Sven sagt:

    @Hanni: Da werden vorher wohl noch ein paar Monde ins Land ziehen.

    @Mathepauker: Der Code wird in das allgemeine Archiverobjekt verschoben, was aber auch Teil der Dll ist. Dadurch ändert sich die Größe der Dll nicht wesentlich.

  6. Peter sagt:

    Bildlich gesprochen: Wenn du einen Schrank von der einen Seite auf die andere Seite schiebst, wird der Raum auch nicht kleiner. 😉

  7. Lefteous sagt:

    Ich hoffe bei dieser Pflege werden sich auch einige Verbesserungen ins SQX-SDK einpflegen lassen. Nach wie vor stehen
    1) Ändern des Zielverzeichnisses für jede zum Entpacken hinzugefügte Datei
    2) oder sogar „TC-kompatibles“ Entpacken. Statt ein Befehl, um alles zu entpacken, je ein Aufruf eines Befehls, der die nächste zum Entpacken hinzugefügte Datei entpackt

    ganz oben auf meiner Wunschliste – vielen Dank im vorraus!

  8. Sven sagt:

    Ich kann momentan noch nicht sagen, ob und wann die Änderungen in’s SQX-SDK einfließen werden. „TC-kompatibles“ Entpacken wird aber wohl eher nicht kommen. Das bisherige System hat sich gut bewährt.

  9. Lefteous sagt:

    Ich würde mich über jede Verbesserung freuen.

  10. Sven sagt:

    Das SQX-SDK würde es dann aber nur noch als Unicode-Version geben, da ich den Ansi-Zopf bei den Archivern jetzt auch abgeschnitten habe.

  11. Lefteous sagt:

    Ich könnte damit sicher leben.

Top