Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.137 Beiträge
 
Delphi 12 Athens
 
#2

Re: ReadFileScatter/WriteFileGatter

  Alt 3. Jan 2007, 18:20
Morschn,

beim weiteren Rumspielen mit ReadFileScatter/WriteFileGather ist unter Anderem auch noch dieses Programm rausgekommen.
Hier gibt es auch mal was zum Schreiben (WriteFileGather) ^^


Es ist sozusagen ein FileSplitter ... nocheiner

allerdings mal als sowas wie 'ne Konsolen-Anwendung mit MiniGUI.


'n Einblick in die möglichen Parameter:
Code:
FileSplitter -?                  // Hilfe
FileSplitter -s "abc.def" mb100  // Datei in 100MB-Stückchen zerlegen
FileSplitter -c "abc.def.part1" // Dateien wieder zusammensetzen
FileSplitter                    // GUI
Ohne Parameter und bei Falscheingaben kommen 2 bis 3 kleine Dialoge zur Parametereingabe.

In den Dialogen und per -? bekommt man natürlich Infos zu den einzelnen Parametern.


Und ja ich weiß ... für die Programmgröße wäre eine Abschaffung der Units SysUtils und Dialogs nicht schlecht.
Mal sehn, ob ich micn mal dazu durchringen kann diese abzuschaffen ... falls es jemand für nötig hällt. ._.

Eine Prozesanzeige fehlt und auf Resourcenschutzblöcke, sowie eine ordnungsgemäße Freigabe bei "Fehlern" wurde bewußt verzichtet,
da sich WinNT+ (NT4 2K XP Vista) ja auch schon so hervorragend um alle nötigen Dinge kümmert.



So, aber nun nochmal zu ein paar Besonderheiten und anderer Infos:
  • Zieldateiname wird aus der Quelldatei erzeugt
  • Zielverzeichnis entspricht dem Quellverzeichnis
  • SplitSize wird auf ein vielfaches der Sektor-Größe aufgerundet (meißt 512 Byte-Schritte)
    der Code würde sonst, auf Grund des NonCached-Read/Write, wesendlich aufwendiger werden müssen
  • Datum (LastWrite) und Attribute werden jeweils von der/den Ausgangsdatei(en) übernommen
    diese Daten gehen also nicht verloren
  • keine Fortschritsanzeige
    Ob das Programm noch läuft sieht man (nur) an den sich veränderten Dateien und im TaskManager,
    aber das Programmende wird entweder durch die Statistik, oder eine Exception angezeigt.
  • Registryeinträge, INIs, oder Ähnliches gibt es nicht
  • es wird mindestens Windows NT 4.0 SP2 benötigt
    siehe Requirements unter MSDN-Library durchsuchenReadFileScatter
zum QuellCode:
  • Kommentare gibt's kaum
  • 's ist vermutlich dennoch übersichtlich,
    vorallem da auf alles Überflüßig und Unnötige verzichtet wurde
    ansonsten ist der relevante Code recht kurz - abgesehn von den Prüfungen der Eingabeparameter...
  • ReadFileScatter und WriteFileGather zählen angeblich mit zu den schnellsten Dateiopperationen,
    wenn das stimmt, dann sollte dies der wohl schnellste FileSplitter sein
  • als Schreib-/Lesepuffer wurden mehrere aufeinanderfolgende Speicherblöcke verwendet, welche als Ganzes reserviert und dann Stückchenweise zugeordnet wurden
  • Resourcenschutzblöcke und Dergleichen fehlen,
    sind aber für diese Art von Programm nicht nötig (Windows kümmert sich darum)
    dennoch solltet ihr in euren Programmen soetwas vorsehen, jedenfalls wenn ihr nicht wißt wie sich Windows verhält


Falls noch Fragen offen sind oder Fehler auftreten, dann meldet euch einfach.
Ansonsten scheint das Programm bis jetzt fehlerfrei zu funktionieren.



PS: das Programm ist, auch wenn ich vermutlich irgendwann daran noch etwas weiterentwickle,
nicht wirklich für einen "Großeinsatz" gedacht ... vielmehr soll/kann es als Demo für die Verwendung von MSDN-Library durchsuchenReadFileScatter und MSDN-Library durchsuchenWriteFileGather diehnen.
Darum wird es vermutlich auch niemals mit so'ner schönen GUI wie bei den anderen FileSplittern ausgestattet
Angehängte Dateien
Dateityp: exe filesplitter_552.exe (158,0 KB, 4x aufgerufen)
Dateityp: dpr filesplitter_873.dpr (13,1 KB, 6x aufgerufen)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat