![]() |
gimme md5!-Ein kleines Programm zum Vergleichen von Dateien
Liste der Anhänge anzeigen (Anzahl: 4)
Weil es mir gelegentlich passiert, dass ich eine Datei zwei Mal oder noch öfter herunterlade, und dann nicht weiß, ob sie genau gleich sind (Dateigröße muss ja nicht unbedingt gleich sein), habe ich mir ein Programm geschrieben, das bis zu drei Dateien anhand ihrer md5-Checksumme vergleicht. Vielleicht braucht's ja wer :-)
Natürlich kann man es auch verwenden, um einfach nur die md5-Checksums auszulesen ;-) Außerdem kann das Programm die Verzeichnisse auslesen, die im Windows Explorer geöffnet sind, und schon voreintragen - dann fehlt nur noch der Dateiname. Die Dateinamen muss man im Moment allerdings noch von Hand oder per [Strg]+[V] einfügen, Drag&Drop kommt, sobald ich es hingekriegt habe. Wäre dabei für Unterstützung dankbar, da ich noch keinerlei Plan habe, wie ich das machen kann/soll :-) Um den Quelltext kompilieren zu können, muss man unter Umständen noch auf 'Komponente'-->'ActiveX importieren' gehen, dann 'Microsoft Internet Controls' oder 'Microsoft Internet Controls 1.1' (je nach Windows-Version) auswählen und dann Installieren drücken - bekommt man die Fehlermeldung, TWebBrowser sei schon installiert und man kann es trotzdem nicht kompilieren, dann muss man halt auf 'Unit anlegen' klicken. So ist jedenfalls bei mir (Delphi 7 Enterprise / Windows Vista) gewesen. Die andere nicht unbedingt vorhandene Unit (md5) ist dabei. Die muss man nur noch im Delphi-Hauptverzeichnis im Unterverzeichnis 'lib' platzieren, also z.B. in 'C:\Programme\borland\Delphi 7\lib\'. Dann müsste es funktionieren. Ich bin für Feedback jeglicher Art dankbar! |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Hey, ich finde das Programm gut. Allerdings wäre eine "OpenDialog" nicht schlecht ;)
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Das Programmfenster sollte sich in der Größe nicht verändern lassen, ein Open-Dialog wäre von Vorteil.
Wie funktioniert der rechte Button? Gruß Jörg |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Du öffnest ein paar Ordner im Windows Explorer und klickst auf den Button :-)
Oder meinst du wie das im Quelltext funktioniert? Dazu muss ich sagen: Das hab ich nicht selbst gemacht und auch nicht so ganz verstanden. Ich hab's von ![]() und der opendialog... den hab ich irgendwie total vergessen :-) kommt bald, hab nur grad keine zeit |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Zitat:
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Ich hab grad ne Super geniale Idee^^: Wie wärs wenn man Ordner und die ganze Festplatte auswählen kann um nach Duplikaten zu suchen. Vielleicht ist es auch zu umständlig, aber ne Super tolle geniale Idde^^ ist es! :) :) :)
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
@Larsi: hast Du Dir die Anzahl der Durchläufe mal ausgerechnet?
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
ja ungefähr 3 Minuten, und? Mit ner progressbar kiregt man das bestimmt schön hin und außerdem hat man ja auch mal kurz zeit, oder? Dann könnte man auch gleich Duplikate löschen!
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
*Ääähhh* Darf ich fragen, wie Du auf 3 Minuten kommst? :gruebel:
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Ja, darfst du :) :) :) Also gehen wir mal davon aus in einem großen Ordner sind 180 dateien und dann lassen wir dem programm mal großzügig eine sekunde pro datei was schon viel zu viel ist! 180 Dateien müssten so in 1 minute fertig sein :) :) :)
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Ich will mal sehen, wie Du in drei Minuten durch 5 Partitionen mit 272113 Dateien gehst und mir die Duplikate lieferst. :mrgreen:
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Ich rede grade uach von eimem ORDNER!!! Ich würde das auch ne halbe Stunde im Hintergrund laufen lassen wenn das geht und wenns duplikate dann lsöcht und noch den gewonnen speicher anguckt das wäre doch wirklich ein super tolles geniales Programm!
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Zitat:
Pass auf, dass Dich die Ironie nicht erschlägt... |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Stimmt ich verrate hier grade Super Tolle Geniale Ideen :) Nee mal im Ernst ich programmier sowas morgen mal der zeitliche Aufwand hält sich ja in Grenzen wenn man ein bisschen abgucken kann
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Außerdem gibt's da schon mindestens dreitausend Programme die das machen, auch hier in der dp einige, imho sogar open source.
Und hab die Hausaufgaben noch ein paar Minuten verschoben, neue Version kommt gleich. Mit "nicht ganz verstanden" meine ich nicht "ich habt's einfach mal kopiert" sondern ich habe versucht, es zu verstehen, und das, was ich nicht verstanden habe, dann kopiert. Das Problem ist dabei nur, das ich kaum Ahnung davon habe, wie ich auf andere Programme zugreife. Aber ich versuche, es zu lernen :-) Und zu den drei Minuten: du musst jede Datei mit jeder vergleichen. Ich weiß ja nicht, wie viele Dateien du hast, aber der "Eigenschaften"-Dialog zeigt mir alleine auf meiner internen Festplatte über 200.000 an, und auf der externen nochmal 185.000. Jede Datei mit jeder zu vergleichen heißt bei n Dateien (n²-n)/2 (*) Vergleiche, bei 10.000 Dateien bedeutet das 49995000 Vergleiche. Das dauert auf jeden Fall länger als 3 Minuten. Rechnen wir das ganze jetzt mit n=200000, so erhalten wir 19.999.900.000 Vergleiche. Fast 20 Milliarden!!! Das sind 111110556 Vergleiche pro Sekunde. Wenn deine Platte das schafft... meine jedenfalls nicht. Dein Beispiel mit 180 Dateien: 32220 Vergleiche. 537 pro Sekunde wenn eine Minute reichen soll (n²-n)/2 Erläuterungen: Das 1/2 braucht man, damit man nicht Datei a mit Datei b UND Datei b mit Datei a vergleicht, sondern nur a mit b ODER b mit a. n²-n ist ja das gleiche wie n*(n-1) und das ist die Anzahl der Vergleiche mit doppelten: n Dateien müssen je mit (n-1) Dateien, also allen außer sich selbst, verglichen werdem. Deshalb (n²-n)/2. |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Du kannst aber wirklich gut rechnen, kein Scherz :) :) :)
Kann mir jemand den Namen so eines Programmes aus der Open Soource geben??? |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
[OT] Ich bewerbe mich schonmal für Larsis Service-Hotline :mrgreen: (SCNR^^) [/OT]
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Service Hotline? Meinste den Sch**ß auf meiner Homepage? Klar kannst gerne machen es rufen bestimmt bei null Spendern auch gleich 111110556 Leute an die alle ne Frage zu einem Programm haben :) :) :) Oder meinste was ganz anderes?
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Nee, das hast Du schon richtig erkannt :zwinker:
[edit] :) :) :) (muss wohl sein)[/edit] |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Zitat:
Gruß Jörg |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
@jmit: gar nichts markieren :-)
du öffnest einfach ein paar ordner, z.b. eigene dateien oder programme oder so, und klickst dann zurück im programm auf den button. bei mir funktioniert's unter vista prächtig, win 2000 ist auch kein problem, also wieso sollte xp nicht gehen? probier's doch nochmal und könntest du deine vorschläge zum interface vielleicht etwas präzisieren? danke. wie gesagt, kritik ist immer willkommen! @larsi: ![]() vllt. hilft dir das weiter: ![]() |
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
Zitat:
|
Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
hm... das ist komisch. wie man im quelltext sieht greift das programm ja auf gar keine dateien zu (außer natürlich beim errechnen der hashes)!
hast du windows vielleicht nicht auf c: installiert? oder sonst irgendwelche "exotischen" dinge mit deinem windows gemacht? das wären die einzigen möglichkeiten die mir so spontan um halb elf noch einfallen^^ Der quelltext des kopier-buttons ist ja folgender:
Delphi-Quellcode:
du kannst ja mal den source nehmen und mit f7 compilieren (immer wieder f7 drücken, am besten draufbleiben, du kennst das wahrscheinlich eh) und mir sagen, in welcher zeile der fehler kommt. die md5-berechnungs-blöcke aber am besten per f8 überspringen, sonst sitzt du noch nächstes jahr mit dem finger auf f7 rum^^
var
ShellWin: IShellWindows; i: Integer; ClName: array[0..64]of Char; Pfad: AnsiString; begin ShellWin := CoShellWindows.Create; for i := 0 to Pred(ShellWin.Count) do with ShellWin.Item(i) as IWebBrowser2 do begin GetClassName(hwnd, ClName, SizeOf(ClName)); if (string(ClName)= 'ExploreWClass') or (string(ClName)= 'CabinetWClass') then begin Pfad:= StringReplace(LocationURL, 'file:///', '', [rfReplaceAll, rfIgnoreCase]); Pfad:= StringReplace(Pfad, '/', '\', [rfReplaceAll]); Pfad:= StringReplace(Pfad, '%20', ' ', [rfReplaceAll]); if DirectoryExists(Pfad) then ListBox1.Items.Add(IncludeTrailingPathDelimiter(Pfad)); //ListBox1.Items.Add(Format('%d %s %s', [HWND, LocationURL, LocationName])) end; end; EDIT: oder in delphi die listbox vergrößern und visible auf true setzten. sie ist so 8*8 pixel groß in der linken oberen ecke im moment und posten was da drin steht. vllt. vorher noch die kommentierung entfernen damit das ding ein bisschen mehr verrät :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz