AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Does It Fit? Ein nützliches Brenntool

Does It Fit? Ein nützliches Brenntool

Ein Thema von phlux · begonnen am 9. Aug 2007 · letzter Beitrag vom 17. Okt 2007
Antwort Antwort
Seite 3 von 8     123 45     Letzte » 
Benutzerbild von phlux
phlux
Registriert seit: 4. Nov 2002
Hallo liebe Delphi-Gemeinde,

tja lange nichts mehr von mir gehört habe quasi vor zwei Jahren den polnischen Abgang gemacht (aka ich geh mal kurz Kippen holen) und bin ins Java-Lager gewechselt dazu kam dann noch eine Freundin mit der ich lieber die Zeit verbringe als mit Programmieren
Nun war mir aber mal ein bisschen langweilig auf der Arbeit und ich verspürte den Drang mal wieder eine VCL Anwendung zu schreiben, deshalb habe ich mir ein Tool gebastelt welches ein bisschen Ordnung in meine Daten-Sammelwut bringen soll:

Does It Fit?

Version 1.1.2

Was macht es?
Does It Fit ordnet Dateien die zum Brennen gedacht sind so an, dass DVD Rohlinge in ihrer Kapazität maximal ausgelastet werden.

Wie erleichtert es mir die Arbeit?
Neben dem Erstellen von Listen wie die Dateien auf DVDs am besten gebrannt werden, ermöglicht es auch per Drag and Drop die Dateien dann in allen gängigen Brennprogrammen zu ziehen die D'n'D unterstützen. Will heißen: Liste erstellen, zu Nero rüber ziehen, brennen! Kein lästiges Ausprobieren mehr, welche Dateien am besten zueinander passen, damit nicht zuviel Platz verschwendet wird.

Gebrauchshinweise
Da das Programm momentan noch ohne Installer auskommt muss man einfach das zip-File entpacken und das Programm starten.
Erster Schritt sollte sein im Menü unter Datenträger den richtigen Rohling-Typ auszuwählen.
Als nächstes dann unter Datei das Root-Verzeichnis auswählen, in dem die Daten liegen die man brennen möchte.
Hierbei ist zu beachten, dass wenn Verzeichnisse oder Dateien die größer als das zu brennende Medium sind gefunden werden das Programm abbricht, da ich der Meinung bin, dass man bestehende Unterverzeichnisse nicht "auseinanderpflücken" sollte.
Ergo, Verzeichnisse und Dateien dürfen nie größer als der DVD-Rohling sein! Anders herum, wenn man will das Dateienpäarchen unbedingt auf eine DVD sollen, packt sie in ein Unterverzeichnis
Jetzt scannt das Programm ne Runde und erstellt die Listen. Mit einem Klick links auf die jeweiligen Zusammenstellungen kriegt man die Details angezeigt (Ausnutzung des Mediums, freier Speicherplatz, usw). Wenn man zufrieden ist mit der Zusammenstellung, zieht man den Eintrag links einfach per Drag and Drop in ein Brennprogramm seiner wahl und brennt die DVD.


Da man die Katze ja nicht im Sack herunterlädt, gibts im Anhang nen Screenshot nebst dem Programm

Wünsche, Kommentare und gefundene Bugs dürfen geäußert werden

Updates


1.1.2
  • Vista Manifest inkludiert um Adminrechte zu erlangen
  • Bug beseitigt der auftrat wenn man DIF in 120dpi laufen ließ
  • Dialogbeschriftungen (Buttons, etc) sind nun auf Deutsch

1.1.1
  • Bug im Plugin-Management gefixed
1.1.0
  • Code zur Verzeichniswahl verändert
  • Plugins implementiert
  • Ein paar interne Optimierungen
  • Die Möglichkeit erschaffen, DIF ins Kontextmenu des Explorers zu integrieren
  • Es wird nun erneut gescannt wenn man die Größe des Mediums ändert
1.0.3
  • Berechnung der Verzeichnisgröße gefixed, stimmen nun mit dem Explorer über ein
  • Verzeichnisse mit Übergröße können nun nachträglich gescannt werden, kein Abbrechen mehr
  • Ein paar interne Optimierungen
  • Ein Kontext-Menü in der Detail-Ansicht zum Löschen, öffnen und betrachten der Eigenschaften wurde hinzugefügt
1.0.2
  • Historie-Funktion funktioniert nun wirklich
  • Fehler behoben, dass keine Zusammenstellungen mehr angezeigt werden
  • Profile für CD-Rs korrigiert
  • Die Torten-Diagramm Komponente mit einer besser funktionierenden ersetzt
1.0.1
  • Historie-Funktion hinzugefügt
  • Icons für die Detailansicht hinzugefügt
  • Profile für CD-Rs hinzugefügt
  • Anzeigen über Speicher usw verbessert
Miniaturansicht angehängter Grafiken
dif_168.png  
Angehängte Dateien
Dateityp: zip doesitfit_162.zip (405,8 KB, 101x aufgerufen)
Dateityp: zip plugin_sdk_151.zip (81,2 KB, 26x aufgerufen)
 
hathor
 
#21
  Alt 10. Aug 2007, 12:51
Ich habe eine DIRSIZE-Funktion gefunden, die identische Werte wie der Explorer anzeigt:

Delphi-Quellcode:
...
var TotalSize: Int64; //global
...
function AddThouSeps (const S: string): string;
var
    LS, L2, I : Integer;
    Temp : string;
begin
    result := S ;
    LS := Length (S);
    if LS <= 3 then exit ;
    L2 := (LS - 1) div 3;
    Temp := '';
    for I := 1 to L2 do
            Temp := ThousandSeparator + Copy (S, LS - 3 * I + 1, 3) + Temp;
    Result := Copy (S, 1, (LS - 1) mod 3 + 1) + Temp;
end;

function DirSize(Path: string; ScanLabel, SizeLabel: TLabel): Int64;

{ func to return the total number of bytes found in a directory. }
{ You can pass 2 TLabels for a progress while scanning:
  ScanLabel: will display the current path being scanned
  SizeLabel: will display the total size so far counted.
  If you don't want to use either Labels, pass nil to both. You
  can still use returned value to read the total size. Example:
  (For Delphi 4/5)
  TotalSize := 0;
  Label1.Caption := IntToStr(DirSize('C:\Windows', nil, nil)) + ' bytes';
  (For Delphi 3)
  TotalSize := 0;
  Label1.Caption := FloatToStr(DirSize('C:\Windows', nil, nil)) + ' bytes';
  (It is a little faster this way.)
  Note: you MUST initialize the global TotalSize variable to 0 before
  using this function. }

var
  Res: Integer;
  SR: TSearchRec;
begin
  Result := TotalSize;
  if Copy(Path, Length(Path), 1) <> '\then
    Path := Path + '\';
  if not DirectoryExists(Path) then
    begin
      MessageDlg('Directory does not exist: ' + Path, mtError, [mbOK], 0);
      Exit;
    end;
  if ScanLabel <> nil then
    begin
      ScanLabel.Caption := 'Scanning ' + Path;
      ScanLabel.Update;
    end;
  Res := FindFirst(Path + '*.*', faAnyFile, SR);
  try
    while Res = 0 do
      begin
        if (SR.Name [1] <> '.') and (SR.Name [1] <> '..') then
          begin
            if ((SR.Attr and faDirectory) <> 0) then
              DirSize(Path + SR.Name + '\', ScanLabel, SizeLabel)
            else
              TotalSize := TotalSize + SR.Size;
          end;
        Res := FindNext(SR);
        if SizeLabel <> nil then
          begin
            {$IFDEF Delphi3Below}
            SizeLabel.Caption := 'Total size: ' + FloatToStr(TotalSize) + ' bytes';
            {$ELSE}
            SizeLabel.Caption := 'Total size: ' + IntToStr(TotalSize) + ' bytes';
            {$ENDIF}
            SizeLabel.Update;
          end;
      end;
  finally
    FindClose(SR);
  end;
  Result := TotalSize;
end;

//Aufruf - Beispiel:
//TotalSize:=0; Label1.Caption := FloatToStr(DirSize('C:\Windows', nil, nil)) + ' Bytes';

//oder formatiert:
//Label1.Caption := AddThouSeps(FloatToStr(DirSize('C:\Windows', scanlabel1, sizelabel1))) + ' Bytes';
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

 
Delphi 6 Personal
 
#22
  Alt 10. Aug 2007, 16:23
danke für den code, aber da ich delphi 6 nutze wird die größe in TSearchRec als int zurückgegeben, was bei großen dateien ja probleme bereitet, deshalb kann ich den code leider nicht nutzen
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

 
Delphi 6 Personal
 
#23
  Alt 14. Aug 2007, 12:00
Und schon gibt es ein neues Update auf Version 1.0.3, folgendes hat sich geändert:

- Berechnung der Verzeichnisgröße gefixed, stimmen nun mit dem Explorer über ein
- Verzeichnisse mit Übergröße können nun nachträglich gescannt werden, kein Abbrechen mehr
- Ein paar interne Optimierungen
- Ein Kontext-Menü in der Detail-Ansicht zum Löschen, öffnen und betrachten der Eigenschaften wurde hinzugefügt
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

 
Delphi 6 Personal
 
#24
  Alt 15. Aug 2007, 14:47
** bump **

Wäre nett zur neuen Version ein wenig Feedback zu kriegen
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Daniel G
 
#25
  Alt 15. Aug 2007, 15:00
Sehr gut. Hab' nach'm kurzen Review keinen Fehler gefunden. Eventuell an eine Plugin-Schnittstelle für unterschiedliche Export-Formate gedacht? So könnte man die Zusammenstellung gleich als Nero-Projekt (oder halt für ein anderes Programm) abspeichern und dann einfach in Nero laden und Brennen. Wenn man das auf Plugins auslagert, müsstest du das nicht alles alleine schreiben.
  Mit Zitat antworten Zitat
hathor
 
#26
  Alt 15. Aug 2007, 16:05
1 Fehler entdeckt:

Größe der Zusammenstellung
4.486 MB (4.703.910.751 Bytes) = richtig!

bei 'Ungenutzter Speicher'
wird angezeigt: 3MB (3.409.057) = falsch,
weil das DVD-Maximum um genau diese Größe überschritten ist!

Ausnutzung in Prozent ist dann natürlich auch falsch:
99,93 %

Fast perfekt:

Ich möchte bei 'Ordner suchen' mit der Paste-Funktion einen Ordnernamen im Format
"C:\dir\dir\dir" eingeben können...
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

 
Delphi 6 Personal
 
#27
  Alt 15. Aug 2007, 23:52
@daniel, ja gute idee, ich könnte nen plugin-interface bauen mit dem man verschiedene exporter erstellen kann

@hathor: dein Problem kann ich jetzt nicht nachvollziehen, ich habe testweise mir nen ordner erstellt mit 14gb daten, wobei jedes file circa 3-5mb groß war. Dann habe ich dif drüber laufen lassen,
welches mir folgende ergebnisse lieferte:
Zitat:
Größe der Zusammenstellung: 4.483 MB (4.700.368.303 Bytes)
Ungenutzter Speicher: 0 MB (4.689 Bytes)
Ausnutzung in Prozent: 100,00 %
Die Ungenauigkeiten erkläre ich jetzt mal durch Rundungsfehler
Habe aus Spass das ganze auch mal auf DVD gebrannt mit Nero (und einen Rohling geopfert ) hat alles tadellos geklappt. Die Werte wie groß eine DVD ist habe ich Wikipedia entnommen. Meine Vermutung warum deine Zusammenstellung 3 MB zu groß ist, ist folgende: Du hast beim Zusammenstellen als Datenträger DVD-R (Minus) angegeben, dann aber versucht das Ganze auf einen DVD+R (Plus) Rohling zu brennen. Da herrscht nämlich ein Unterschied in der Größe von ungefähr 3 MB (auch auf Wiki nachzulesen). Wenn du also das Zusammenstellen erneut versuchst mit dem richtig ausgewählten Datenträger-Typen funktioniert es denke ich mal.
Eine Verzeichniswahl mit Plain-Text respektive Clipboard wird es denke ich nicht geben, da ich den Auswahldialog komfortabel genug finde
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
hathor
 
#28
  Alt 16. Aug 2007, 08:37
Du hast recht mit den unterschiedlichen Kapazitäten der DVD-R und DVD+R.
Nach erfolgter Zusammenstellung und nachträglicher Änderung des Datenträgers ändert sich aber nichts in der Anzeige.
Man muss erst 'Erneut durchsuchen' anklicken - das könnte man bei Änderung des Datenträgers automatisieren.
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

 
Delphi 6 Personal
 
#29
  Alt 16. Aug 2007, 09:52
Zitat von hathor:
Du hast recht mit den unterschiedlichen Kapazitäten der DVD-R und DVD+R.
Nach erfolgter Zusammenstellung und nachträglicher Änderung des Datenträgers ändert sich aber nichts in der Anzeige.
Man muss erst 'Erneut durchsuchen' anklicken - das könnte man bei Änderung des Datenträgers automatisieren.
Stimmt, das wurde hier auch schon mal bemängelt, werde ich umsetzen.
Edit: Ist drin, wird beim nächsten Update dann verfügbar sein
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Daniel G
 
#30
  Alt 16. Aug 2007, 16:04
Zitat von phlux:
@daniel, ja gute idee, ich könnte nen plugin-interface bauen mit dem man verschiedene exporter erstellen kann
Wäre ja im Prinzip nichtmal n großer Aufwand: Eine Funktion, an der dein Programm erkennt, dass es sich um eine Export-DLL handelt (Also für sowas wie 'n Handshake... Ich liebe den Begriff... Wenn's nach mir ginge, gäbe es für alles einen "Handshake". ) und eine Funktion, die ein Array mit den Dateipfaden zurückliefert. Feddisch.

//Edit: Wenn die Funktion fertig ist, und ich dann noch Zeit habe, täte ich ein Plugin für ImgBurn basteln wollen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:15 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