AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte SearchSameFiles v2.0 (SSF)
Thema durchsuchen
Ansicht
Themen-Optionen

SearchSameFiles v2.0 (SSF)

Ein Thema von himitsu · begonnen am 17. Aug 2005 · letzter Beitrag vom 2. Apr 2010
Antwort Antwort
Seite 3 von 5     123 45      
Benutzerbild von himitsu
himitsu
Registriert seit: 11. Okt 2003
Beiträge zur Version 2 ab hier:
http://www.delphipraxis.net/internal...=663073#663073

aktueller Download immer noch im ersten (diesem) Beitrag


************************************************** *****************


Ich wollte nur mal ein kleines Programmchen vorstellen und nachfragen ob es für'n Anfang i.O. ist?
Außerdem würde ich gern wissen, ob sowas überhaut noch Jemand gebrauchen kann und ob's sich auch lohnt, wenn ich das noch weiterentwickeln würde.
>> Arbeitsspeicher, Geschwindigkeit/Durchsatz(KB/s) und was sonst noch wichig ist

Es vergleicht alle Dateien in dem angegebenen Verzeichnis und seiner Unterverzeichnisse miteinander und gibt am Ende eine Liste mit allen Dateien aus, welche den selben Inhalt haben.


Seit aber nicht all zu hart zu mir ... dieses ist nur so'n kleines Nebenprojekt und ich hatte halt nicht gerade viel Arbeitszeit reingestecken können.
Und das an der Optik/Bediehnung unbedingt noch einiges gemacht werden muß, ist mir bekannt.

Und dafür, daß es Funktionen meines "neuen" UCC verwendet und derzeit das 2. größere (NichtDemo)Programm ist, welches darauf aufbaut, lauffähig ist und anscheinend ohne Probleme läuft, bin ich erstmal damit zufrieden und die Hoffnung der baldigen UCC-Veröffentlichung steigt immer mehr in mir auf (na ja, 2 winzige Kleinigkeiten wurmen mich immernoch).


Intern basiert es ja auf meinem UCC und sonst ist da noch nicht so viel drin.
Zitat von SourceCode Counter von JLSoft Software:
SearchSameFiles.dpr 12 Zeilen 247 Byte 213 Zeichen
SearchSameFilesU.pas 220 Zeilen 7.9 KB 6190 Zeichen
[add]hat jetzt'n paar Zeilchen mehr ... sowar passiert halt, wenn man etwas aufrüstet -.-''
Verglichen werden die Dateien, aus Performancegründen, per CRC32.
Einen vorzeitigen Abbruch bekommt man über das nette [X].


Ach ja: im Moment werden weder Registry, noch irgendwelche anderen Einträge/Veränderungen in/an eurem System vorgenommen.
Es gibt also nur diese "kleine" EXE, welche wirklich nur nach gleichen Dateien sucht ^^



PS: ich hab durch dieses Programm gelernt, wie man die Speicherverwaltung des Heap aushebeln kann.
Durch die staren und nicht verschiebbargen Blöcke hatte ich auf Grund der 2 verwendeten Haupt-Arrays und mit lediglich 55.000 Vergleichsdateien ein massiges Speicherproblem bekommen.
Es gab also nach einer Weile einen kleine Exception (Out of Memory) ... na ja, über 300 MB RAM+Pagefile war wohl 'n bissl zuviel -.-''
Aber nach 'ner kleinen Optimierung bei den Arrays und Strings konnte einiges an Speicher eingesparrt werden (bei meinem Testlauf sind es jetzt nur noch rund 5 MB).
Und ein optimierteres SetLength brachte auch noch etwas Tempo mit rein.


Zum Schluß bleibt dann nur noch eine Überlegung:
Soll ich den Quellcode für dieses Programm ebenfalls veröffentlichen und in Ruhe zusehen, ob nicht zufällig jemand etwas mehr Zeit investieren kann und daraus vielleicht doch noch was großartiges macht?
Angehängte Dateien
Dateityp: exe searchsamefilessfx_138.exe (342,5 KB, 85x aufgerufen)
Dateityp: zip searchsamefiles_197.zip (451,1 KB, 159x aufgerufen)
Dateityp: zip searchsamefiles_1__letzte_sourcen___exe_v0.65___v0.7__100.zip (443,4 KB, 75x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
 
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#21
  Alt 12. Jan 2007, 13:06
Zitat von gordon freeman:
Ich find das Programm
's freut mich ... ist schön, wenn da endlich mal die jahrelange Erfahrung etwas bewirkkt ^^

Zitat von gordon freeman:
Hab ca. 4000 Fotos reingepackt und er findet zuverlässig alle 1000 doppelten.
Na dat hoffe ich doch

Zitat von gordon freeman:
Allerdings muss ich jetzt, um die Doppelten zu löschen überall jeweils eins nicht anhacken und alle weiteren mit Häckchen versehen, also um die 1000 Häckchen setzen.

Ich weiß nicht, ob du das Programm noch weiter entwickelst, allerdings würde ich noch eine Funktion zum automatischen Löschen von Dub's einbinden.
Ein bissl was werd ich schon noch machen,
aber dat wird wohl schwieriger, denn nach welchem Muster soll ich denn dann löschen lassen?
OK, möglich wäre jeweils die erste Datei in den Gruppen zu belassen, aber was ist, wenn dann mal einer jede Zweite nöchte und wieder einer nur die Letzte ....

Aber du kannst ja einfach alle Gruppen markieren und dann über's Popupmenü dat Häckchen setzen ... dann mußt du nur noch die 1000 Häckchen wegmachen

Wenn die Dateien in unterschiedlichen Verzeichnissen sind, dann besteht die Möglichkeit alle Dateien im selben Verzeichnis (und dessen Unterverzeichnissen) wie die markierte(n) Datei(en) zu ändern.

Ich werde aber mal 'nen neues Menü einbauen, womit man dann in den markierten Gruppen alle Dateien wählen kann, bis auf die Erste.

Zitat von gordon freeman:
EDIT: Stelle gerade fest, dass dein Programm bei schreibgeschützten Dateien einfach abbricht. Könntest ja noch eine Funktion à la: "Schreibgeschützte Datei löschen: Ja / Ja Alle / Nein / Nein Alle / Abrrechen" eibauen.
Sollte behoben sein ... hab inzwischen auf 'ne andere Löschmethode umgestellt (Dateien landen jetzt im Papierkorb und demnächst wird man das auch abstellen können).

[add]
ach ja, ich weiß zwar grad nicht was ich geändert hatte, aber neue Version oben
  Mit Zitat antworten Zitat
1ceman

 
Delphi 6 Personal
 
#22
  Alt 12. Jan 2007, 18:58
Zitat:
Ich find das Programm Thumbs up!
da kann ich mich nur anschließen.
könntest als weitere funktion vlt noch einbauen, dass er ähnliche dateien findet(is vorallem für mp3s manchmal von vorteil)
und dass dann angezeigt wird wie ähnlich die dateien sind(in %).
Roman
  Mit Zitat antworten Zitat
MrKnogge

 
Delphi 2007 Professional
 
#23
  Alt 12. Jan 2007, 19:03
Man kann die "Ähnlichkeit" zweier Dateien zwar rausfinden, nur weis ich nicht, ob das bei mp3's zum gewünschten Ergebnis führt. (Bitrate etc. ...)
Christian Bootz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#24
  Alt 13. Jan 2007, 11:30
Dat mit der Ähnlichkeit hatte ich mir auch schonmal vorgestellt, aber wieMrKnogge schon einführte ist es recht schwierig,
denn was definiert man was ähnlich

Ein byteweiser Bergleich bringt nicht wirklich was, also müßte man den Inhalt "dekodieren" und dann vergleichen ... bei Musik also z.B. alles erstmal in ein einheitliches Format umcodieren und dann einen Mustervergleich (lautstärkeunabhängig) durchführen ... da wäre also ein extra Programm viel geeigneter dafür, denn ich müßte dann ja schließlich (wegen der Gerechtigkeit) auch noch massenhaft andere Formate mit implementieren und nicht nur Musik
  Mit Zitat antworten Zitat
Dunedain
 
#25
  Alt 13. Jan 2007, 16:56
Sehr schönes (und vor allem schnelles) Prog. Habs mir gerade mal angesehen und es auch gleich mal auf ein Verzeichnis mit ca 6000 Bilder losgelassen.
Die vorhandenen Duplikate wurden (natürlich) alle gefunden, aber wesentlich schneller als bei dem Tool, was ich zuvor benutzte (CloneSpy).

Hab allerdings auch noch nen Verbesserungsvorschlag, die kommt zwar nicht direkt von mir, sondern von der Gewohnheit mit CloneSpy.
Dort gibts die Möglichkeit ältere|neuere Dateien auswählen|löschen, was denke ich mal die Arbeit in vielen Fällen erleichtern würde.

Die Möglichkeit mehrere Verzeichnisse zu durchsuchen ist gut, lässt sich aber imho sehr schlecht ansteuern, da bei einem Doppelklick der erste Pfad überschrieben wird.
Vielleicht könntest du das noch ein bischen "optimieren"?

Außerdem wäre ne kurze Feature Dokumentation in Dateiform, wie sie hier im Forum schon existiert, im Download Archiv mit Sicherheit nicht verkehrt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#26
  Alt 16. Jan 2007, 18:52
OK, ich hab mich mal etwas versucht und Einiges zusammengestellt...

@gordon freeman:
Dieses währe wohl deinem Wunsch entsprechend?
in allen Gruppen alles markieren, bis auf die erste Datei:
PopupMenü > "Check if not First" = Strg+A > [Context] > S > C


@Dunedain:
Wäre möglich ... ich muß mir jetzt nur noch überlegen, ob ds Datum wärend dieser Auswahlfunktion jeesmal neu ausgelesen werden soll, oder ob ich die Struktur verändere und es wegen der Geschwindigkeit gleich beim Suchlauf mit speichern soll...
Vom Aufwand und Häufigleit der Verwendung her würde ich allerdings wiederwillig zu Letzterem tendieren



Im Anhang mal die aktuelle (noch nicht ganz fertige) Datei.
(muß noch Einiges testen und bessere Namen finden)

- Suchverzeichnisse werden gespeichert (INI)
- und dann hat sich vorwiegend was im PopupMenü geändert ... die (Un)Check-Funktionen

[edit]
Anhang (exe) entfernt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#27
  Alt 19. Jan 2007, 14:12
Zitat von Dunedain:
Die Möglichkeit mehrere Verzeichnisse zu durchsuchen ist gut, lässt sich aber imho sehr schlecht ansteuern, da bei einem Doppelklick der erste Pfad überschrieben wird.
Vielleicht könntest du das noch ein bischen "optimieren"?
Na ja, eigentlich war die Programmoberfläche nur für ein Verzeichnis ausgelegt (im Gegensatz zur V1) und die Unterstützung für mehrere Verzeichnise entstand auch nur "zufällig", als mir auffiehl, daß die Vergleichsprozedur eigentlich mehrere Verzeichnisse unterstützen könnte ...

Tja und da es mich ja auch schon etwas gestört hatte, daß dieses ein bissl blöd Nutzbar ist, hab ich nun endlich 'ne "Lösung" gefunden.

Der Verzeichnisauswahldialog und das Drag&Drop hängen jetzt das/die Verzeichnis(se) an, wenn die aktuelle Eingabe mit einem * endet und dann schau mal, was passiert, wenn du jetzt doppelt in das Editfeld klickst



Zitat von Dunedain:
Außerdem wäre ne kurze Feature Dokumentation in Dateiform, wie sie hier im Forum schon existiert, im Download Archiv mit Sicherheit nicht verkehrt
Werd' versuchen mir mühe zu geben ... unten mal ein Anfang


Ansonsten hab ich grad mal massig umgestellt, so wird das Datum gleich beim Suchlauf mit gespeichert, wodurch es nun auch noch 'ne Spalte damit gibt und es ebenfalls im Export enthalten ist.

Dann hab ich mir die Verwaltung der Oberfläche (Enable und Visible der Controls) zusammengefasst und vereinfacht.

Nun werd' ich noch'n bissl an den UnCheckProzeduren rumspielen...
Einige der Menüpunkte bleiben erhalten, aber ich versuche das ganze noch mal in 'nem Auswahldialog zusammenzufassen (siehe Bild ... "oben" wählt man aus und unten steht dann hoffentlich die Auswahl nochmal im Klartext)

[edit]
Anhang (exe) entfernt
Miniaturansicht angehängter Grafiken
searchsamefiles_102.jpeg  
Angehängte Dateien
Dateityp: txt searchsamefiles2.rtf_889.txt (281,2 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#28
  Alt 28. Mär 2007, 18:56
So, hier mal wieder was Neues ... vorerst als Testversion.
  • Verwaltung fr Multiverzeichnissuche etwas berarbeitet.
  • Wird mehr als 1,5 Sekunden an einer Datei gearbeitet, dann blendet sich eine (neue) Fortschrittsanzeige ein.
  • Die Speicherverwaltung wärend der Suche wurde optimiert.
    Die Speicherdefragmentierung sollte sich dadurch verringern.
    An der Geschwindigkeit wird sich dadurch wohl nicht merklich was verbessern (war ja eh schon recht CPU-schonend).
  • Der Lesezyklus beim Vergleichen wurde anders verteilt.
    Hier sollte sich eine "deutliche" Geschwindigkeitssteigerung (beide Dateien auf'm selben Laufwerk) ergeben.

    Bei meiner Testfestplatte war das durchschnittlich 'ne Steigerung um +73% ... von 12,5 MB/s (v2.1.0.4x) auf bis zu 21,6 MB/s.
    (zwei gleiche 2,5 GB Testdateien auf der selben Partition, bei einer Messdauer von 30 Sekunden)
  • Anzeige der Datei-/Verzeichnisnamen im Programmkopf verbessert.
    - Labels durch Static ersetzt
    - und SS_PATHELLIPSIS eingeführt
    jetzt werden sich die Labels bei berlangen Namen nicht mehr bis sonstwohin ausdehnen.
    hier gibts derzeit aber noch ein Problem, daher auch vorerst nur als TestVersion.
    > http://www.delphipraxis.net/internal...=701224#701224

v2.2.0.54 debug

[edit]
Anhang entfernt (derzeit is noch Beiträge weiter unten ein "Gleichwertiger")
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

 
Delphi 2007 Professional
 
#29
  Alt 29. Mär 2007, 08:35
2 kleine Bugs: (siehe Anhang)

1. Wenn man bei der Statistic (Contact - Donatin) mit der Maus über die Links Fährt wird die Titelleiste mit LEs zugespamt ^^
2. Habe mal meinen Windowsordner gescannt und dabei einen Anzeigebug gefunden. DubSize < 0.

EDIT: Evtl. liegts an 'Unbenannt.JPG'!?
Miniaturansicht angehängter Grafiken
bug1_103.jpg   bug2_108.jpg   unbenannt_104.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#30
  Alt 29. Mär 2007, 16:51
Also erstmal das in der Titelleiste:
ist wie gresagt 'ne Testversion und da hab ich mir unter anderem wegen eines Problems mir unteranderem 'ne Anzeige eingebaut, um zu sehn ob die Ereignissprozeduren überhaupt aufgerufen werden.

Dieses kommt also demnächst wieder raus.

siehe http://www.delphipraxis.net/internal...=701633#701633



8 TB
Die Dateien unter Error sind all diejenigen, welche nicht geöffnet werden konnten, oder (was wohl eher selten vorkommt) wo es Lesefehler gab.
Die meisten der Dateien in deiner Liste sind von vorwiegend Windows im Schreibzugriff geöffnet,
wärend mein Programm versucht diese nur im Lesemodus und ohne Schreibrechten(Sharing) zu öffnen.

Da ich die Ordner (Dateigröße=-1) und "fehlerhafte" Dateien (Dateigröße=-2) wärend der Suche über negative Dateigrößen verwalte (um mir zusätzliche Speicherplätze zu ersparen) kommt da wohl auch 'ne negatibe Zahl raus

Ist mir leider nie aufgefallen, da ich immer mindestens eine doppelte Datei, oder zumindestens keine "Fehlerhaften" im Suchergebnis hatte, so daß dort zufällig was Positives rauskam.
> jetzt wo ich's weiß, is dieser Fehler beim nächsten Mal bestimmt schon behoben.


Im Anhang aber dennoch schon mal was "Neueres" ... da ist eigentlich nur was an der Speicherverwaltung behoben, sonst is alles gleich.
Leider hatte ich ein F (Hexadezimal) zuviel, so daß da schnell mal ein bissl zuhoher Speicherverbrauch entsttehen konnte.
> 350.000 Datei verglichen und so um die 1 GB an RAM verbraucht


[add]
so, nun is endlich mal das Schriftproblem weg
und das Zählproblem hab ich gleich mit behoben (hoff ich zumindest )


[review]
jetzt "nur" noch (eventuell) das OnMouseLeave/Enter und das Popupmenü und einige seiner Funktionen

[edit 04.08.09] anhang entfernt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 14:08 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