| Autor |
Beitrag |
Webo
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Mi 16.07.08 20:30
Hallo,
ich schreibe schon seit einiger Zeit an einem Tuning-/Optimierungsprogramm für Windows (werde ich bald hier im DF veröffentlichen  ). Zum krönenden Abschluss wollte ich ein eigenes DefragTool schreiben. Also habe ich mich über Cluster usw. ausführlich informiert.
Jetzt stellt sich mir die Frage: Ist das überhaupt in Delphi realisierbar? Und mit welchen Mitteln ? Da steh ich grad mächtig auf dem Schlauch und wär für Unterstützung sehr dankbar.
Grüße
Webo
|
|
Fabian E.
      
Beiträge: 554
Windows 7 Ultimate
Visual Studio 2008 Pro, Visual Studion 2010 Ultimate
|
Verfasst: Mi 16.07.08 20:55
Also prinzipiell denke ich schon dass es möglich ist, TuneUpUtilities ist ja auch in Delphi geschrieben. 
|
|
Webo 
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Mi 16.07.08 20:59
Das lässt mich schon mal hoffen, vllt sollte ich die mal anschreiben wie die defragmentieren 
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Mi 16.07.08 21:08
Mal ne Frage: hast du irgendein bestechend geniales Konzept, oder warum soll man später dein Programm zum defragmentieren nehmen. Wenn nein, würde ich an deiner stelle lieber die Normale Windows-Defragmentierung verlinken. Nachher machst du irgendeinen Fehler, und darfst dann den Leuten erklären wo ihre Daten geblieben sind.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mi 16.07.08 21:11
Genau, und die rücken das bestimmt einfach so raus..
Ganz ehrlich: lass es sein.
Nimms nicht persönlich, aber ich würd meine Festplatte lieber gar nicht defraggen, als da ein Programm zu verwenden, was mal "nebenbei als Hobby" geschrieben wurde - schließlich kann es hier sehr schnell zu Datenverlusten kommen!
|
|
Boldar
      
Beiträge: 1555
Erhaltene Danke: 70
Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
|
Verfasst: Mi 16.07.08 21:52
frag doch mal mael, der Hat einen Hexeditor geschrieben, der direkt auf die
Cluster und sektorend der Festplatte zugreift und byteweise samt leeren Bereichen anzeigt anzeigt. So ähnlich müsstest du auch auf die Festplatte zugreifen und Entsprechend verschieben. Auf jedenfall ist das Thema defragmentierung sehr komplex. Da währe es vermutlich einfacher, die Windows defrag zu nutzten und dass so dahinzufriemeln dass der user nichst merkt. Da würde man vermutlich mehrere Monate dran arbeiten und beim testen mehrere Gigabytes Daten ins Nirwana schicken^^
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Do 17.07.08 09:42
Es gibt in Windows eine (native) PI, mit der mn Defragmentieren kann. Wo ich die Leute von SysInternals aber mal angeschrieben hab, hab ich nicht mal ne Antwort zurückbekommen. Das Tool Contig von denen ist aber nichts desto trotz ein nettes Progrämmchen um mal eben ne Defragmentierung zu realisieren (Da Kommandozeilen-Programm geht das über Pipes recht gut auszuwerten und in ne GUI einzubetten). Ich denke mal, damit solltest Du erstmal nen Ansatz-Punkt haben, wie Du deine Defragmentierung bauen kannst. Ferner gibt es nen IOCTL-Befehl, mit dem man das Cluster-Bitmap der HDD auslesen kann (gut, ist eigentlich auch nix andres als ne von der API versteckte Datei auf'm Laufwerk *G*). Das kombinieren, ein wenig grafisch aufbereiten und den Rest über nen gepipeten Prozess erledigen lassen, dann solltest Du eigentlich was Funktionierendes rausbekommen (und kannst bei Datenverlusten auf Microsoft verweisen  )
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Webo 
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Do 17.07.08 15:56
Danke schon mal für die vielen Antworten. Ich werde jetzt mal intensiv nach Möglichkeiten suchen, mein Projekt durchzusetzen, denn es gibt rund 5 andere Tools in meinem Großprojekt, die z.B. die Registry von verweisten Einträgen befreien usw., bei denen auch ein hohes Risiko des Datenverlusts besteht. Doch noch schönen 403 ! Durchläufen gab's nicht einen Absturz oder gar Datenverlust (auf mehreren Rechner getestet). Also könnt ihr mir glauben, dass ich auch bei einem DefragTool dafür sorgen werde, dass sowas möglichst nicht passiert.
Außerdem finde ich das ein bisschen schlapp bei so einem Großprojekt (größte was ich je alleine gemacht habe) als Abschluss einfach einen Link zum Windows-Defragger reinzupacken. Das mach ich erst dann, wenn ich vor dem eigenen Tool kapitulieren muss, und der Zeitpunkt ist im Moment garantiert nicht erreicht.
@BenBE
Hab schon fast einen Vertrag mit einem alten Bekannten, der mal ein kleines aber feines Defragtool programmiert hat, werde das dann zusätzlich (oder wenn mein Vorhaben scheitert), alleine mitliefern. Und die von SysInternals werde ich dann nicht anschreiben, wenn sie dir auch nicht geantwortet haben.
Grüße
Webo
|
|
Tilman
      
Beiträge: 1405
Erhaltene Danke: 51
Win 7, Android
Turbo Delphi, Eclipse
|
Verfasst: Do 17.07.08 16:01
Ich mein ja auch nur dass du alle Eventualitäten beachten solltest. Beispiel: Programme schreiben auf die Partition, während diese gerade Defragmentiert wird.
_________________ Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
|
|
Webo 
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Do 17.07.08 16:19
Tilman hat folgendes geschrieben: | | Ich mein ja auch nur dass du alle Eventualitäten beachten solltest. Beispiel: Programme schreiben auf die Partition, während diese gerade Defragmentiert wird. |
Das ist wohl war, klar ich muss drauf aufpassen, dass bei niemanden Daten verloren gehen, aber es gibt sehr viele Defragmentierprogramme, die das auch können. Warum sollte ich das nicht einbauen können/wollen ?
Ich denke, die sicherste Variante ist: Wie z.B. PowerMagic das macht, einfach die Partition sperren für den Zeitraum (wie das geht muss man allerdings erstmal wissen). Bei der Windowspartition muss man dann aber ne andere Variante wählen.
Soweit bin ich ja noch lange nicht, deshalb habe ich dieses Thema erstellt um mir Tipps zu holen, die ich teilweise auch schon bekommen habe und dir mir geholfen haben.
|
|
Allesquarks
      
Beiträge: 510
Win XP Prof
Delphi 7 E
|
Verfasst: Do 17.07.08 16:26
Ich würde dir raten da auf etwas vorgefertigtes zuzugreifen. Denn mit den BS-Datei-Operationen kriegst du das nicht hin, sondern das erledigt der Dateisystemtreiber. Das heißt du müsstest, wenn du das wirklich selber machen möchtest, nen neuen Dateisystemtreiber schreiben. Viel Spaß! Nebenbei NTFS, was wohl in deinem Fall der Standard sein sollte ist nicht öffentlich dokumentiert, weshalb du daran schon scheitern würdest (Die Linux Leute haben dafür nen paar Jahren gebraucht NTFS-3G).
Was du aber machen könntest ist: Dateien die fragmentiert sind neu auf die Festplatte zu schreiben (an die gleiche Stelle im Verzeichnis Baum). Da hast du dann eine Chance, dass die zusammenhängend abgespeichert werden.
Nebenbei Paragon ist glaube ich eine von zwei Firmen weltweit (außer Microsoft), die nen eigenen ntfs-treiber haben
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 17.07.08 20:46
|
|
Webo 
      
Beiträge: 577
Erhaltene Danke: 14
Win 7, Debian
C# (Visual Studio 2013), PHP, C, C++ (Eclipse, KDevelop)
|
Verfasst: Do 17.07.08 21:29
Total nützlich, vielen Dank.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Do 17.07.08 21:31
Selbst wenn Du SysInternals nicht direkt in dein Programm mitliefern darfst, kannst Du immer noch auf die Microsoft-Page verweisen, da es da sProgramm dort frei zum Download gibt. D.h. also einfach Schnittstelle für Contig einbauen und dann wenn's gefunden wurde, benutzten ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 17.07.08 23:18
Ich hab vor ewigen Zeiten mal ein OpenSource-C-Programm nach Delphi übersetzt und auc längere Zeit benutzt. Die Antwort ist also: ja. Mittlerweile nutze ich PerfectDisk, und auch das nur auf der einen Partition wo BOINC drauf läuft, die vielen Zugriffe erzeugen halt massenweise Fragmente. Ansonsten hab ich die Erfahrung gemacht, dass defragmentieren schlichtweg Quatsch ist.
Leider wollte da die graphische Darstellung nicht so wie ich, das Canvas hat immer mal sein Handle vergessen. Mittlerweile weiß ich glaub ich sogar woran das lag, damals hab ich nicht wirklich an Thread-Synchronisierung gedacht.
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 18.07.08 21:06
Martok hat folgendes geschrieben: | | Ansonsten hab ich die Erfahrung gemacht, dass defragmentieren schlichtweg Quatsch ist |
Kannst du das mal begründen? Warum ist es auf der einen Seite sinnvoll, aber auf der anderen Seite Quatsch?
|
|
Nils:D
      
Beiträge: 131
Debian, Win XP
Delphi 7 Arch.
|
Verfasst: Fr 18.07.08 22:03
Die Defragmentierung macht nur relativ gesehen Sinn. Wenn ich mein Projektverzeichnis defragmentiere macht das nur bedingt Sinn, da es sich eh fast jeden Tag verändert und somit ständig fragmentiert wird und auch täglich defragmentiert werden sollte - aber so viel bringt mir das eh nicht, also defragmentiere ich es mit, wenn ich irgendwann mal wieder alle Datenträger defragmentiere. Wenn man das Systemverzeichnis defragmentiert oder Verzeichnisse bei denen eher gelesen als geschrieben wird, macht es Sinn. Zum einen freut es das Dateisystem beim Zugriff und zum anderen ist es vorteilhaft, schneller Daten zu lesen. Ein Verzeichnis mit thumbnails sollte man denke ich defragmentieren, solange diese ständig gelesen werden.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Sa 19.07.08 02:12
Luckie hat folgendes geschrieben: | Martok hat folgendes geschrieben: | | Ansonsten hab ich die Erfahrung gemacht, dass defragmentieren schlichtweg Quatsch ist | Kannst du das mal begründen? Warum ist es auf der einen Seite sinnvoll, aber auf der anderen Seite Quatsch? |
Bitte das davor lesen:
Martok hat folgendes geschrieben: | | auf der einen Partition wo BOINC drauf läuft, die vielen Zugriffe erzeugen halt massenweise Fragmente. |
Auf (fast) allen anderen Partitionen wird überwiegend eine gewisse Datenmenge geschrieben und die bleibt dann da, bis sie entweder gelöscht werden oder auf die Archivplatte wandern. Da fragmentiert der relativ wenig. Sagen zumindest die Programme: selten mehr als 5 fragmentierte Dateien. Hier irgendwas anzufassen ist 'wirtschaftlich' Unsinn.
BOINC is da schon etwas anderes, da werden ja Dateien durchgenudelt bis zu geht nicht mehr. Hier ist kaum eine Datei nicht fragmentiert. Und die ab und zu mal neu zu verteilen bringt schon was.
Zudem ist es einfach ein Erfahrungswert dass der Unterschied nicht spürbar ist, das System aber während dem Defrag praktisch ausfällt.
Auch wenn das anscheinend bereits gemacht wird, das bitte ignorieren, weil es völliger Quatsch ist:
Allesquarks hat folgendes geschrieben: | | Ich würde dir raten da auf etwas vorgefertigtes zuzugreifen. Denn mit den BS-Datei-Operationen kriegst du das nicht hin, sondern das erledigt der Dateisystemtreiber. |
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
|