Willkommen Gast. Bitte einloggen oder registrieren.
März 18, 2025, 04:02:27
Übersicht Ungelesene Beiträge auflisten Hilfe Suche Spiele Mitgliederkarte Kalender Login Registrieren

Schnellsuche
+  MODDING-FAQ FORUM
|-+  Hardware & Software
| |-+  Software
| | |-+  TriCompare
  « vorheriges nächstes »
0 Mitglieder und 0 Gäste betrachten dieses Thema.
Seiten: [1] nach unten Drucken
Autor Thema: TriCompare  (Gelesen 6028 mal)
mak
Modder der Apokalypse

*

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


M/A/K


Profil anzeigen WWW
TriCompare
« am: Juli 1, 2007, 15:34:18 »

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:
Code:
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 Offline
Geschlecht: Männlich
Beiträge: 2138


Master of STLCD and LISA III


Profil anzeigen
Re: TriCompare
« Antwort #1 am: Juli 1, 2007, 16:43:06 »

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 Offline
Geschlecht: Männlich
Beiträge: 1147


M/A/K


Profil anzeigen WWW
Re: TriCompare
« Antwort #2 am: Juli 1, 2007, 17:20:22 »

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 Offline
Geschlecht: Männlich
Beiträge: 838


Spammen gefährdet Ihre Postings.


Profil anzeigen
Re: TriCompare
« Antwort #3 am: Juli 1, 2007, 20:56:37 »

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. Wink

MfG
Modshark
Gespeichert

   
mak
Modder der Apokalypse

*

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


M/A/K


Profil anzeigen WWW
Re: TriCompare
« Antwort #4 am: Juli 1, 2007, 21:04:29 »

Das liegt nicht am Programm, sondern an der Leitung. Ich bin hier im Berg relativ weit vom nächsten Verteiler entfernt und habe sehr wahrscheinlich kein Glasfaserleitung. Reparieren? Vergiss es, habs erfolglos versucht... Daher versuch ich das Zeug nun auf der binären Ebene selbst in die Hand zu nehmen. Wenn die RAR-Parts nach 3fachem Download immer noch nicht passen, kann ich sie nun so richten.
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
Falzo
Diktator vom Dienst
Administrator

*

Karma: +15/-0
Offline Offline
Geschlecht: Männlich
Beiträge: 5088



Profil anzeigen WWW
Re: TriCompare
« Antwort #5 am: Juli 4, 2007, 19:06:38 »

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

...bis einer heult!
find virtual reality related boards at https://vrforum.de
mak
Modder der Apokalypse

*

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


M/A/K


Profil anzeigen WWW
Re: TriCompare
« Antwort #6 am: Juli 4, 2007, 19:31:13 »

Dass das Projekt über die Konsole hinausgeht habe ich schon befürchtet... Jetzt ist es amtlich!

@OlafSt: Stimmt, du bist unser Programmiergenie... (Sieher ST(G)LCD bestens) Fällt dir was ein?
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 Offline
Geschlecht: Männlich
Beiträge: 2138


Master of STLCD and LISA III


Profil anzeigen
Re: TriCompare
« Antwort #7 am: Juli 5, 2007, 08:12:36 »

Also die Vergleicherei läßt sich sicher mit Bordmitteln und Kommandozeilentools von Windows problemlos machen. Nur das teilweise kopieren nicht.

Da aber @mak ohnehin schon was C-ähnliches beherrscht: Saug dir ein VC++ Express (kost nix) und bastel es doch selbst... Ist wesentlich einfacher, als es aussieht Grin

Allerspätestens, wenn die Kopierroutine funktioniert, fingerst du dann auch nebenbei die FileCompare-Geschichte da mit rein und schwups, hat man alles All-In-One.
Gespeichert

Erstens: Lies was da steht. Zweitens: Denk drüber nach. Drittens: Dann erst fragen
mak
Modder der Apokalypse

*

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


M/A/K


Profil anzeigen WWW
Re: TriCompare
« Antwort #8 am: Juli 5, 2007, 12:26:53 »

Schwups, und schon funktionierts! Grin Bei dir tönt das einfach, du hast ja auch viel Ahnung von der Sache... Meine C Kenntnisste sind nicht weit über Pixel zeichnen hinausgegangen... (Starfield Bildschirmschoner für den Taschenrechner und so Zeugs... =))

Aber ich schau mal rein...

--- EDIT ---
Für die, die wissen wollen, wie weit ich atm bin (und mir ev. auch Tipps geben wollen Wink): Der aktuelle Quelltext von TriCompare (Mit dem Editor öffnen)
Ich hab mich leider nicht an eine wichtige Proggerregel gehalten... Ich habe nicht etwas Funktionierendes ausgebaut... Undecided Daher funktioniert das Programm auch noch nicht. Sad
« Letzte Änderung: Juli 7, 2007, 10:25:11 von mak » 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
Seiten: [1] nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Einloggen mit Benutzername, Passwort und Sitzungslänge      

Powered by MySQL Powered by PHP
eXTReMe Tracker
Seite erstellt in 0.022 Sekunden mit 18 Zugriffen.
© 2001-2022 MODDING-FAQ FORUM | SMF
Alle Rechte vorbehalten.
Prüfe XHTML 1.0! Prüfe CSS!