Seiten: [1]
|
 |
|
Autor
|
Thema: TriCompare (Gelesen 6040 mal)
|
mak
Modder der Apokalypse

Karma: +3/-0
Offline
Geschlecht: 
Beiträge: 1147

M/A/K
|
Dass es beim herunterladen manchmal zu CRC-Fehlern kommt, wissen ja sehr wahrscheinlich viele von euch. Ich versuche nun, eine Routine zu entwickeln, die solche Fehler entdeckt und entfernt. Das sollte folgendermassen funktionieren: Gegeben sind 3 Dateien gleicher Grösse, die zu einem sehr hohen Grad übereinstimmen, aber an unterschiedlichen Stellen mit CRC-Fehlern verschmutzt sind. Angenommen, bei einem binären Vergleich sagen 2 Dateien immer das gleiche, so kann doch mit einem solchen "Mehrheitsentscheid" die ursprüngliche Datei wiederhergestellt werden.
Schlussendlich soll die Routine als .bat-Datei laufen, die Befehle "comp" und "fc" von cmd.exe sind mir bekannt. Aber wie kann ich zwei Dateien an einer bestimmten Stelle miteinander vergleichen und eine neue Datei schreiben?
Grundgerüst:
if size(Datei1) == size(Datei2) == size(Datei3) { for i in Datei1 { if (Datei1[i] == Datei2[i] || Datei1[i] == Datei3[i]) {Resultat[i] = Datei1[i];} elseif (Datei2[i] == Datei3[i]) {Resultat[i] = Datei2[i];} else {print "Fehler, alle 3 Dateien sind an der Stelle "+i+" verschieden."} } } else { print "Dateien nicht gleich gross!" }
|
|
|
Gespeichert
|
M/A/K hat gesprochen! Athlon X2 6400 + Xigmatek Achilles / 2x 2 GB RAM / 64 GB SSD / ATI 5850 / C433 / Windows-Rating: 6.3
|
|
|
OlafSt
Global Moderator

Karma: +13/-0
Offline
Geschlecht: 
Beiträge: 2138

Master of STLCD and LISA III
|
Problem:
Datei1 hat irgendwo die Folge 0,4,22,16,8,19 Datei2 hat an derselben Stelle die Folge 0,4,22,16,8,19 Datei3 hat an derselben Stelle die Folge 24,19,8,16,58,99
Wie willst du nun wissen, das Datei1 und Datei2 nicht zufällig an derselben Stelle denselben Fehler haben - Datei3 also eigentlich richtig ist ? Mehrheitsentscheid führt hier ins nichts, ergo wird der TriCompare nie wirklich 100% funktionieren.
CRC kann dir nur sagen, das was falsch ist. Aber nicht wo und nicht was.
Für das, was du vorhast, verwendet man ECC. Damit lassen sich Fehler nicht nur finden, sondern auch tatsächlich korrigieren. Bei Harddisks z.B. wird ECC benutzt.
|
|
« Letzte Änderung: Juli 1, 2007, 19:57:43 von OlafSt »
|
Gespeichert
|
Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
|
|
|
mak
Modder der Apokalypse

Karma: +3/-0
Offline
Geschlecht: 
Beiträge: 1147

M/A/K
|
Dein Einwand ist absolut berechtigt, doch ist diese Möglichkeit in Realität vernachlässigbar klein. Es ist sehr selten, dass bei zwei zeitlich verschiedenen Downloads die genau gleichen Stellen genau gleich gestört werden. Ich hab mir mal ein Bild von der Sache gemacht, indem ich KDiff3 verwendete und 3 Versionen einer Datei miteinander verglich. Die Abweichungen sind allerhöchstens ein paar wenige Prozente von Datei zu Datei.
Ich behaupte mal, dass diese Routine in 99.9% aller Fälle eine fehlerfreie Datei ausgibt. Für den unwahrscheinlichen Fall, dass alle drei Dateien verscheiden sind, wird ja eine Fehlermeldung ausgegeben. Der noch unwahrscheinlichere, dass 2 Dateien den gleichen Fehler beinhalten, wird sehr wahrscheinlich als CRC-Fehler erkannt, vor allem, wenn RAR-Archive heruntergeladen werden. Falls nicht, ist es auch nur ein kleiner Knacks im Bild, in der Musik oder was auch immer...
|
|
|
Gespeichert
|
M/A/K hat gesprochen! Athlon X2 6400 + Xigmatek Achilles / 2x 2 GB RAM / 64 GB SSD / ATI 5850 / C433 / Windows-Rating: 6.3
|
|
|
Modshark
Global Moderator

Karma: +11/-0
Offline
Geschlecht: 
Beiträge: 838

Spammen gefährdet Ihre Postings.
|
Also zum einen würde ich mir über mein System Gedanken machen, wenn beim dreimaligen Download einer Datei immer an unterschiedlicher Stelle Dateifehler auftreten... Abhilfe sollte da ein vernünftiger Downloadmanager schaffen. Aber selbst mit den Browsermitteln wäre eine so hohe Fehlerquote äußerst verdächtig.
Was RAR-Archive angeht kann man diese über Extras->Archiv reapieren (Alt+R) wieder richten lassen und das ohne Vergleichsdatei. 
MfG Modshark
|
|
|
Gespeichert
|
|
|
|
|
Falzo
Diktator vom Dienst
Administrator

Karma: +15/-0
Offline
Geschlecht: 
Beiträge: 5088
|
ich find die idee nicht schlecht, zumindest fuer den eigenen hausgebrauch wärs doch mal nen versuch wert. was spricht im überigen dagegen, mehr als 3 dateien zu vergleichen?
ob das ganze allerdings mit boardmitteln aus der dos-console geht, wage ich zu bezweifeln, vielleicht vb-scripting?
oder olaf schuettelts bei dem gedanken an irgendeinen versuch mit ner script-sprache und schuettelt sowas inner schnellen routine ausm aermel ;-)
|
|
|
Gespeichert
|
|
|
|
|
|
|
Seiten: [1]
|
|
|
|
|