Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   gimme md5!-Ein kleines Programm zum Vergleichen von Dateien (https://www.delphipraxis.net/108878-gimme-md5-ein-kleines-programm-zum-vergleichen-von-dateien.html)

zahor 20. Feb 2008 16:45


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!

BullsEye 20. Feb 2008 16:52

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
Hey, ich finde das Programm gut. Allerdings wäre eine "OpenDialog" nicht schlecht ;)

jmit 20. Feb 2008 17:11

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

zahor 20. Feb 2008 18:20

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 diesem Thread "geklaut".
und der opendialog... den hab ich irgendwie total vergessen :-) kommt bald, hab nur grad keine zeit

DeddyH 20. Feb 2008 18:26

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
Zitat:

Das hab ich nicht selbst gemacht und auch nicht so ganz verstanden.
Teil 1 ist in Ordnung, Teil 2 nicht IMHO. Du solltest das abstellen ;)

Larsi 20. Feb 2008 18:32

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! :) :) :)

DeddyH 20. Feb 2008 18:35

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
@Larsi: hast Du Dir die Anzahl der Durchläufe mal ausgerechnet?

Larsi 20. Feb 2008 18:43

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!

DeddyH 20. Feb 2008 18:45

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
*Ääähhh* Darf ich fragen, wie Du auf 3 Minuten kommst? :gruebel:

Larsi 20. Feb 2008 18:49

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 :) :) :)

Die Muhkuh 20. Feb 2008 18:49

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:

Larsi 20. Feb 2008 18:52

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!

Die Muhkuh 20. Feb 2008 18:53

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
Zitat:

Zitat von Larsi
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

Dieses "super geniale tolle Programm" wäre doch was für Dich? :zwinker:

Pass auf, dass Dich die Ironie nicht erschlägt...

Larsi 20. Feb 2008 18:55

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

zahor 20. Feb 2008 19:01

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.

Larsi 20. Feb 2008 19:05

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???

DeddyH 20. Feb 2008 19:06

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
[OT] Ich bewerbe mich schonmal für Larsis Service-Hotline :mrgreen: (SCNR^^) [/OT]

Larsi 20. Feb 2008 19:09

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?

DeddyH 20. Feb 2008 19:11

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
Nee, das hast Du schon richtig erkannt :zwinker:

[edit] :) :) :) (muss wohl sein)[/edit]

jmit 20. Feb 2008 19:11

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
Zitat:

Zitat von zahor
Du öffnest ein paar Ordner im Windows Explorer und klickst auf den Button :-)
...

Funktioniert irgendwie nicht, Ordner markieren, oder Dateien im Ordner. :gruebel: Kein gut gelungendes Userinterface... :( :(

Gruß Jörg

zahor 20. Feb 2008 19:39

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: http://www.delphipraxis.net/internal...ct.php?t=59489 das projekt scheint's aber nicht mehr zu geben...
vllt. hilft dir das weiter: http://www.heise.de/software/download/o0g0s0l3k311 sind bestimmt auch ein paar opensource dabei!

jmit 20. Feb 2008 20:34

Re: gimme md5!-Ein kleines Programm zum Vergleichen von Date
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo

Zitat:

Zitat von zahor
@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
...

Gemacht wie beschrieben. Bekomme dann folgende Meldung (Siehe Anhang)

zahor 20. Feb 2008 21:43

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:
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;
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^^

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 23:57 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