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 2 von 5     12 34     Letzte »    
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, 76x aufgerufen)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
 
Benutzerbild von Kara
Kara
 
#11
  Alt 16. Sep 2005, 08:30
Hi himitsu!

Ich habs mit mp3s ausprobiert funktioniert gut.
Mir gefällt die Funktion gut, dass ich durch Doppelklick die angezeigten Lieder anhören kann. Dann kann ich überprüfen, ob es sich nicht um verschiedene Versionen handelt.

Mir ist eines aufgefallen: Die mp3s, die ich über dein Programm gelöscht habe, landen erst mal im Papierkorb. Das ist ja noch ok Aber dort wird kein Name mehr angezeigt, sondern nur noch der Icon.
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

 
Delphi 2007 Professional
 
#12
  Alt 16. Sep 2005, 09:03
Zitat von himitsu:
… hat mir der Luckie natürlich auch durch diese Erfolgserlebnis einen Strich gemacht -.-''
tztztz .. wie kann er nur ....

Aber leider hab ich die gleiche Meldung bekommen .. und zwar hab ich das "Zweite Fenster dahinter" einfach mal weggemacht und als ich dann alles gelöscht hab meint er "Ein deaktiviertes oder unsichtbares Fenster kann nicht den Fokus erhalten."
Kara's Problem hab ich leider auch im Mülleimer sind nur Icon's keine Namen mehr .. komisch
Last not leas hab ich noch nen Vorschlag ... wie währe es mit nem "overkill"-Button der alle dis auf das Jeweilige erste/letzte markiert ??

Aber sonnst ist das Programm supi (für ein „Abfallprodukt“ )
So konnte ich endlich mal meine Arbeits-mp3's ausmisten.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon
 
#13
  Alt 16. Sep 2005, 10:04
die idee (wenns denn funktioniert) ist super.

leider bleibt meine ListBox leer

kann es daran liegen das ich ein Netzlaufwerk gescannt hab?

also es werden zwar einträge hinzugefügt (scrollbar) aber es wird keine schrift angezeigt....
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#14
  Alt 16. Sep 2005, 12:24
So Luckie, extra für dich hab ich nochmal meinen ExceptionHandler etwas überarbeitet ... wenn jetzt doch nochmal ein Fehler auftritt (obwohl jetzt dieser Fehler vermutlich verschwunden ist), dann sollte wenigstens der Fehlerdialog nicht mehr im Hintergrund verschwinden. :nein:

Zusätzlich gibt es jetzt noch
  • eine einstellbare Dateimaske
  • wegen dieser Dateimaske ein andere Berechnung der Fortschrittsanzeige
  • die Möglichkeit für mehrere Suchverzeichnisse
  • einen weiteren Befehl zum Dateiöffnen
  • und eine neue Möglichkeit das Suchergebnis weiter einzuschränken
    (aktuelle Dateigruppe aus dem Suchergebnis entfernen)
  • wenn die Operationen zum nachträglichen bearbeiten, oder beim löschen etwas länger Dauern, dann gibt es dort jetzt auch 'ne Fortschrittsanzeige und die Möglichkeit des Abbruchs.
  • Die Textdaten in der Dateiliste werden jetzt ebenfalls über die speicheroptimierte Stringbehandlung verarbeitet (kein "extremer" Anstieg des Speicherverbrauchs mehr)
    und als Bonus ist dadurch auch das Füllen der Dateiliste etwas beschleunigt worden.
  • Und als Letztes gibt's jetzt noch'n "echtes Drag&Drop (nicht dieses eigenartige Delphiding).
    Es kann also ein Verzeichnis/Datei vom Explorer in das Directory-Feld gezogen werden.
  • Wenn neben dem Mauszeiger ein ? ist, dann kommt nach 'ner Weile (10 Sekunden, damit es nicht ständig auftaucht) der Hint, wo vorerst mal die Tastenkombinationen zum Bediehnen versteckt sind.
  • Ach ja, wärend's Programm arbeitet, gibts jetzt auch mal die Berühmte Sanduhr, oder was auch immer ihr installiert habt ._.
  • Und was ich bisher vergessen hatte zu sagen:
    Dieses Programm nimmt keine Änderungen am PC vor, oder Spichert irgendwo irgendwas ab (mit Ausnahme der .DAT-Datei, welche sich im Programmverzeichnis befindet)
  • Da ich das Drag&Drop eh neu implementieren mußte (gemeiner Ausfall ... so kurz vorm Speichern), hab ich die Chance gleich mit genutzt und die Fortschrittsanzeige gleich noch optisch aufgebessert.
Ich glaub das war's jetzt erstma ... bleibt nur zu hoffen, dass der Luckie keine Fehler mehr findet

Was ich aber noch suche ist die Möglichkeit Unterschiedliche Verzeichnisse anzuzeigen ... bis jetzt wird ja jede Datei einzeln aufgeführt -.-''




@Luckie: als bei dir im UsageTracker nichts angezeigt wurde, bewegte sich zu der Zeit (im 5 Sekundentakt) unten links der graue Strich, zwischen dem Close-Button und der prozentualen Speicherauslastungsanzeige? (siehe Bild ... der Strich sollte sich drehen)
Zusätzlich hab ich nochmal 'ne reine UsageTracker-Demo angehängt (MemoryUT.exe)


@glkgereon:
Also, das mit dem Netzlaufwerk kann ich im Moment nicht beurteilen/testen, da ich an den Rechnern, welche ein Netzlaufwerk besitzen keine Adminrechte und leider auch nicht das Recht zum Ausführen "fremder" Programm besitze.
Und ob die Win-API-Funktionen (FindFilesFirst, FindFilesNext) bei Netzlaufwerken funktionieren ist nirgends beschrieben
Es wäre also Nett, wenn da nochmal jemand anderes dieses Testen könnte.

Wenn nichts angezeigt wird, solltest du eventuell nochmal eine neuere Version testen (ab v0.6),
denn dort ist die Anzeigetechnik verändert (jetzt übernimmt die anzeige nicht mehr die Komponenten, sondern mein Programm selber).
Auserdem schein diese Komponente öfters mal 'ne ScrollBar anzuzeigen, auch wenn diese nicht nötig ist. (was für 'ne Zahl steht/stand denn in der Titelleiste, vor Equals?)
Und eventulle könntest du es ja nochmal an einem "normalem" Laufwerk versuchen.
Und würde überhaupt der Schritt "Fill ListBox" ausgeführt? (das ist der letzt Arbeitsschritt, nach dem suchen und der kann bei wenigen "gleichen" Dateien ziehmlich kurz ausfallen)


@kara/TeronG:
Komisch, ich dachte ja, das der Fehler im Papierkorb an meinem Rechner/Windows liegt, denn ich nutze dafür ja nur die normale SHFileOperation-Funktionen, welche auch in der Unit ShellAPI rumliegt.
Und da ich keine Fehler an den entsprechenden Befehlen fand dachte ich halt, das es nur bei mir so sei.
I werd' also das nächste Mal die Funktionen mitbringen und dazu Hilfe einholen müssen.


@TeronG:
der OverKillButton ... schau mal in's PopUpMenü der Dateilist, dort sollte es eine entsprechende Funktion geben
Und jetzt gibt es die gewünschte Funktion auch per Tastenkombination. (sie Hint der DateiListe)
Miniaturansicht angehängter Grafiken
screenshot_-_usagetracker_875.jpeg  
Angehängte Dateien
Dateityp: exe memoryut_848.exe (520,5 KB, 32x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon
 
#15
  Alt 16. Sep 2005, 16:36
Also...

Es war ein Schulcomputer mit Win98 SE
Auch mit C:/Irgendwas hats nicht funktioniert

Fill Listbox wurde angezeigt, da stand Equals 1xx, weiss net mehr genau, irgendwas mit hundert.

aber ich kann dich trösten: zuhause auf Win2k scheint es zu laufen
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#16
  Alt 16. Sep 2005, 17:16
Zitat von himitsu:
@Luckie: als bei dir im UsageTracker nichts angezeigt wurde, bewegte sich zu der Zeit (im 5 Sekundentakt) unten links der graue Strich, zwischen dem Close-Button und der prozentualen Speicherauslastungsanzeige? (siehe Bild ... der Strich sollte sich drehen)
Zusätzlich hab ich nochmal 'ne reine UsageTracker-Demo angehängt (MemoryUT.exe)
Sieht genauso aus, wie bei dir auf dem Screenshot. Und da bewegt sich auch nichts. Aber soll das eventuell so sein? Soll das weiß bedeuten, dort ist nichts? dann hate ich das für etwas unglücklich, wel es so aussieht, als wenn die Darstelleung kaputt wäre.

Ich hatte es ja schon mal gesagt, das mit dem memory usage Tracker ist mehr als unglücklich. warum keine Schaltfläche mit der man ihn zusätzlich öffnen kann? Übrigens, wenn man ihn minimiert ist er weg und man bekommt ihn auch nicht wieder. Die Darstellung der Blöcke ist übrigens so klein, dass man mit der Maus kaum einen Block auswählen kann. Btw was zeigt der eigentlich an? Die Speicherbelegung deines Programmes? Was will ich damit bzw. was bringt mir das?
Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#17
  Alt 17. Sep 2005, 12:39
@Luckie, Links der zeigt die gesamte "virtuelle" Speicherbelegung des Programms an ...
und das mit dem Weiß ist mir schon klar, allerding sieht es sch** aus, wenn die nichtbelegten Blöcke z.B. schwar sind.
Aber du kannst "ganz" leicht einzelne Blöcke auswählen, wenn due die Cursortasten, die Tasten des Nummernblocks (1-9) oder ASDW verwendest ... und mit der Shift-, oder Strg-Taste geht es auch noch schneller.
Rechts wird allerdings nur der Verbrauch der eigenen MemoryManagers aufgelistet (also der Bereich, welcher Links in Rottönen dargestellt wird)

@glkgereon
OK, dann seint es halt ein "winziges" Problem mit Win98(SE) zu geben ... und wenn der Fehler an der Jedi-Komponente liegt, dann weiß ich auch erstma auch nicht weiter (müßte mir dann wohl eher 'ne andere Komponente suchen, oder so) ... es könnte allerdings sein, das die v0.62 besser geht, da ich ja dort die Anzeige verändert hab.
PS: bei vielen "gleichen" Dateien dauert die Anzeige etwas (also bei mir dauert es schon mal 4-5 Minuten, bis die ListBox z.B. 30.000 Dateien gefüllt wurde)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#18
  Alt 19. Sep 2005, 13:03
Ich hab endlich den Fehler in "Exclude Files under Path" gefunden.
Dort war zwar die Auswahl eingeschränkt, allderings wurde nicht das aktuelle Verzeichnis vorgewählt.
Sowas passiert halt, wenn man den Dateinamen im Pfad läßt und natürlich SelectDirectory davon ausgeht, daß das gewünschte Verzeichnis nicht existiert.

I weiß auch nicht, ob's jemand gemerkt hat, aber wenn das Programm beendet wurde, wenn noch eine "Menge" Dateien in der Dateiliste waren, dann blieb das Programm noch ewig im Hintergrund aktiv.
Darum wird jetzt die TreeView vom Programm freigegeben - natrülich mit 'ner Fortschrittsanzeige.

Dann wird noch 'ne Liste geführt, wo die Befehle geloggt werden.
Und es ist damit möglich, daß die Befehle fortgesetzt werden können. (einfach den abgebrochenen Befehl anklicken)
Also Bonus besteht auf diese Weise die Möglichkeit, daß mehrere langandauernde Befehle erstmal abzubrechen und dann über Alt+A all diese Befehle aufeinmal fortzusetzen.
(leider geht "alles" nach der Suche über die TreeView, welche ja nicht gerade schnell ist)

Schaut dazu mal im PopUp-Menü unter "Last Options", dort stehen dann immer die 20 letzten Befehle. (alles was vollständig abgearbeitet wurde ist dort unenabled und der Rest kann dann natürlich ausgewählt werden)
Es wird allerdings kein "Rückgängig" geben.

Und da ich jetzt schonmal 's Programm hochlade (vorallem wegen der behobenen Fehler), ist allerdings noch nicht alles "Neue" im PopUp-Menü verfügbar.
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

 
Delphi 2005 Personal
 
#19
  Alt 7. Jan 2006, 16:56
Hi Himitsu,

Ich find das Programm
Hab ca. 4000 Fotos reingepackt und er findet zuverlässig alle 1000 doppelten.
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.

Ansonsten wie gesagt top.

mfg Martin

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.
Martin
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#20
  Alt 9. Jan 2007, 19:46
So, nun aber mal zur komplett neu erstellten MiniVersion.
In der Alten hatte sich ja hartnäckig ein Fehler in der Namensverwaltung eingenistet, welchen ich einfach nicht fand.

Es ist eigentlich ein recht einfaches Programm und ohne wirklich groß Spielereien.


Für die UnicodeKompatibilit wurde eine TVirtualStringTree, TntEdit und TntLabel verwendet.

Wer die TNT Delphi Unicode Controls nicht besitzt, der kann einfach auf Delphi's TEdit und TLabel abrsten,
allerdings kann dann als Suchverzeichnis kein UnicodeName mehr eingegeben werden.
(in *2U.pas und *2U.dfm alle "Tnt" ber einen Editor durch "" ersetzen und die Unit TntStdCtrls aus *2U.pas entfernen)

Wer keine Mehrfacheingabe als Suchverzeichnis haben möchte könnte dieses mit AllowMultiDir (Compiler-Schalter) umstellen.

Als Lesemethode wird ReadFileScatter verwendet, aber da dieses erst seit Windows NT Workstation 4.0 SP2 zur Verfgung steht, besteht die Möglichkeit auch dieses ber UseReadFileScatter (Compiler-Schalter) abzuschalten.
Dann wird eben ber ReatFile gelesen, wobei dort per NoBuffering (Compiler-Schalter) die Verwendung der WindowsFileCache steuerbar ist.

  • unicodefähig
  • mehrere Suchverzeichnisse möglich
    einfach mit * trennen (z.B. "C:\*D:\*\E:\Verzeichnis")
  • Drag&Drop zur Suchvereichniseingabe
    auch mit mehreren Verzeichnissen/Dateien
    bei Dateien wird nur die Pfadangabe verwendet
  • Export des Suchergebnisses
    im Binärformat, samt Status der CheckBoxen
  • Import eines gespeicherten Suchergebnisses
  • Daten der Import-Datei werden nicht einzeln geprft ... ich geh einfach mal davon aus, daß wenn die Dateiversion und der FileHash stimmt, dann sind auch die Daten darin korrekt
  • Dateien können ohne "echtes" Löschen aus der List entfernt werden
  • Vorvergleiche per partiellem CRC32
  • MultiSelect in Dateiliste möglich
  • Kopieren der selektieren Dateien
    wird als Ansi und Unicode in die Zwischenablage kopiert.
    ebenso mit DropList fr'n Explorer ... die Dateien können dort ber Einfgenfunktion (Strg+V) hinkopiert werden.
  • die Funktionen im PopupMen wirken sich nur auf die selektierten Dateien aus (abgesehn von Ex-/Import)
  • der graue Gruppedateiname entspricht der häufigsten Datei dieser Gruppe
  • Eingabe des Suchpfades per Autovervollständigung oder ber DoppelKlick ins Editfeld
  • Dateiliste kann natrlich sortiert werden (auf Spaltenberschrift klicken)
  • Dateien löschen: werden in den Papierkorb verschoben, wenn möglich
  • ...
  • !!! Achtung: "Soll gelöscht werden?"-Dialoge gibt es nicht,
    allerdings gibt's 'nen Hinweis, wenn alle Dateien einer Gruppe gelöscht werden sollen.
  • gepeichert (INI, Registry...) wird nirgends was
  • dat war's wohl ... mehr kann dat Programm eigentlich nicht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 03:38 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