AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlende parts erkennen

Ein Thema von geskill · begonnen am 17. Jul 2008 · letzter Beitrag vom 18. Jul 2008
Antwort Antwort
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#1

Fehlende parts erkennen

  Alt 17. Jul 2008, 14:44
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.
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Fehlende parts erkennen

  Alt 17. Jul 2008, 15:58
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.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#3

Re: Fehlende parts erkennen

  Alt 18. Jul 2008, 04:51
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.


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

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]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Fehlende parts erkennen

  Alt 18. Jul 2008, 08:29
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#5

Re: Fehlende parts erkennen

  Alt 18. Jul 2008, 08:38
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Fehlende parts erkennen

  Alt 18. Jul 2008, 09:08
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.
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Fehlende parts erkennen

  Alt 18. Jul 2008, 09:16
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
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Fehlende parts erkennen

  Alt 18. Jul 2008, 11:08
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 :)
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 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