Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlende parts erkennen (https://www.delphipraxis.net/117399-fehlende-parts-erkennen.html)

geskill 17. Jul 2008 14:44


Fehlende parts erkennen
 
Hi,
ich habe vor ein Programm zu schreiben, was mit fehlende Archive anzeigt z.b. WinRAR Archive.

Bsp. part3 fehlt:
Wäre noch easy nach 2ter fileextension schauen.
Code:
Bilder_25.07.2006.part1.rar
Bilder_25.07.2006.part2.rar
Bilder_25.07.2006.part4.rar
Aber es gibt auch
Code:
file.r00
file.r01
file.r02
file.rar
oder:
Code:
file.001
file.002
file.003
weitere sind mir nicht bekannt, man könnte jetzt natürlich nach ".part" suchen dann Fall A anwenden, etc.
Ich würde das aber lieber "allgemeiner" schreiben, ich hätte gerne mal ein paar ein Meinungen dazu gehört,
Danke und Grüße im vorraus.

Dani 17. Jul 2008 15:58

Re: Fehlende parts erkennen
 
Zuerst schreibst du dir ein Interface, welches die Methoden eines "Archive Integrity Checkers" definiert. Dann implementierst du für jeden der drei Archivtypen eine Klasse, welche dieses Interface implementiert und den jeweiligen Archivtyp überprüft. Schließlich baust du noch eine Factory-Klasse, welche über eine Methode GetArchiveIntegrityChecker(Filename: String) jeweils eine Instanz des richtigen Archive Integrity Checkers liefert.

Dann schmeißt du das Ganze weg und schreibst alles mit drei If-Abfragen in eine 200 Zeilen lange Prozedur. :mrgreen:

himitsu 18. Jul 2008 04:51

Re: Fehlende parts erkennen
 
am Besten du suchst die eine Komponente, welche RAR-Archive auslesen/verarbeiten kann,
dort suchst du nach einer passenden Prüf-/Testfunktion
(gibt ja meistens sowas, womit man die integrität des Archivs prüfen kann)
und rufst diese einfach auf. :angel:


PS: was mchst du, wenn in deinem Beispiel Part 3 und 5 fehlen?
bzw, woher will dein Programm wissen, wieviele Parts es gibt :stupid:

Code:
Bilder_25.07.2006.part1.rar
Bilder_25.07.2006.part2.rar
[color=silver]Bilder_25.07.2006.part3.rar[/color]
Bilder_25.07.2006.part4.rar
[color=silver]Bilder_25.07.2006.part5.rar[/color]

file.rar
file.r00
[color=silver]file.r01[/color]
file.r02
[color=silver]file.r03[/color]

file.001
file.002
[color=silver]file.003[/color]
file.004
[color=silver]file.005[/color]

marabu 18. Jul 2008 08:29

Re: Fehlende parts erkennen
 
Moin,

die Information, welche Dateien in welcher Reihenfolge zu einem MultiFile-Archive gehören, steht meist in einem Verzeichnis, welches sich bei ZIP-Archiven am Ende des Archivs (also dann am Ende des letzten Parts) befindet - wenn ich mich richtig erinnere. Die Analyse für jedes Archiv-Format selbst zu implementieren dürfte eine Menge Arbeit werden.

Grüße vom marabu

himitsu 18. Jul 2008 08:38

Re: Fehlende parts erkennen
 
sicher daß es die letzte Datei ist?

woher sollen dann die Programme wissen, welche Dateien dazugegören, aa man meistens nur die erste Datei auswählt ... dann stünde diese Liste ja in einem noch unbekannten Dateiteil.

marabu 18. Jul 2008 09:08

Re: Fehlende parts erkennen
 
Probiere es einfach mal aus. Die erste Datei eines Multifile-Archive dürfte eigentlich nur die Kennung enthalten, dass es sich nicht um den Teil mit dem Verzeichnis handelt. Eventuell ist auch ein Verweis auf den Dateinamen des Teils mit dem Verzeichnis enthalten. Das lässt sich sehr schnell über ein einfaches Test-Szenario herausfinden.

Dani 18. Jul 2008 09:16

Re: Fehlende parts erkennen
 
Ich habe mal zwei Kommandozeilen-Entpacker getestet:
Zitat:

Unrar t "Filename"
Zitat:

7z t "Filename"
Beide konnten fehlende Parts in RAR-Archiven erkennen, 7Zip allerdings nur am CRC. Mit einem Komponenten-Wrapper für Unrar.dll hast du wohl den geringsten Aufwand.

Mit ZIP-Archiven hat 7Zip bei fehlenden Parts keinen Fehler festgestellt und einfach eine kleinere Dateigröße angenommen :-(

geskill 18. Jul 2008 11:08

Re: Fehlende parts erkennen
 
Erstmal vielen Dank für den Tipp mit dem Testen des Archivs mit UnRAR,
jedoch klappt das nur solange, wenn das Archiv kein Passwort hat
(ob man Dateinamen dabei verschlüsselt ist egal, er will es immer),
habe es gerade getestet, ist ein bischen doof weil ich ja "nur" testen
will.
Ansonsten kann man halt kurz das PW eingeben, ich werde mir mal die
UnRAR DLL genauer anschauen, zum Glück ist da ein Delphi Beispiel
enthalten :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz