Delphi-PRAXiS
Seite 3 von 11     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Pegasus: Luckies persönliches Synchronisationstool (https://www.delphipraxis.net/41226-pegasus-luckies-persoenliches-synchronisationstool.html)

Luckie 2. Jun 2005 12:14

Re: Pegasus: Einfaches backup Programm
 
Danke für das feedback. *unter den schreibtisch kriecht, um sein Pflege kaninchen Gipsy zu knuddeln*

sECuRE 2. Jun 2005 13:45

Re: Pegasus: Einfaches backup Programm
 
Hi,

ich finde das Programm grundsätzlich von der Idee her sehr nützlich, werde es aber aus Zeitmangel erst nachher testen, gleich mit einem "Ernstfall", nämlich geänderten Quelltext vom Laptop auf meinen PC übertragen. Mir ist im Screenshot aufgefallen, dass es anscheinend keine Möglichkeit gibt, sich die Unterschiede in den geänderten Dateien anzeigen zu lassen. Das fände ich noch eine super Funktion :)

cu

Seven 3. Jun 2005 09:53

Re: Pegasus: Einfaches backup Programm
 
lässt sich die Geschwindigkeit noch optimieren? *duck*
In einem Ordner mir 2000 Dateien ist das Prg ganz schön beschäftigt. ca. 60 Sek

*offtopic an*Zur Zeit benutze ich rsync welches im Cygwin mit dabei ist. Dieses Prg läuft wesentlich schneller. Lässt sich aber halt nur aus der Konsole starten. Was aber nicht schlimm ist. Eine Batch-Datei erstelllen und fertig.*offtopic aus*

mirage228 3. Jun 2005 14:24

Re: Pegasus: Einfaches backup Programm
 
Hi,

Deine beiden Datei-Such Prozeduren sind verbesserungswürdig.
Als erstes müsstest Du die Delphi-Version spezifischen Hinweise beachten und ggf. Code, der nur für Delphi 4 und niedriger vorgesehen ist, entfernen. ;)

Auch ähnlich sich die beiden Prozeduren, sodass man sie auf folgende Weise zusammenfassen könnte.

Du gestaltet ein Event, z.B.
Delphi-Quellcode:
type
  TOnFindFile = procedure(const FileName: string) of object;
Deine Suchprozedur änderst Du zu so einer:
Delphi-Quellcode:
procedure FindFiles(RootFolder: string; OnFindFile: TOnFileFind; Mask: string = '*.*'; Recurse:
  Boolean = True);
var
  SR: TSearchRec;
  s1, s: string;
begin
  Application.ProcessMessages;
  if bCanceled then Exit;
  if RootFolder = '' then
    Exit;

  // Implementation ab Delphi 5 
  RootFolder := IncludeTrailingPathDelimiter(RootFolder);

  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindFiles(RootFolder + SR.Name, Mask, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
    repeat
      if (SR.Attr and faDirectory <> faDirectory) and (Assigned(OnFileFind)) then
          OnFileFind(RootFolder + SR.Name);
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;
Und in die beiden OnFileFind Events, die Du implementieren musst, schreibst Du einfach den Code rein, den Du bisher seperat in den beiden Prozeduren verteilt hattest. Ggf. musst Du noch die Paramterliste ergänzen, falls Du im Event noch andere / weitere Informationen brauchst.

Ich hoffe, dass ich Dir damit einen kleinen Ansatzpunkt zur Verbesserung geben konnte :)

mfG
mirage228

Luckie 3. Jun 2005 14:45

Re: Pegasus: Einfaches backup Programm
 
Das ändert nichts an der Tatsache, dass ich so wohl das Source Verzeichnis durchsuchen muss, als auch das Backup Verzeichnis oder habe ich da jetzt einen Denkfehler?

mirage228 3. Jun 2005 14:55

Re: Pegasus: Einfaches backup Programm
 
Zitat:

Zitat von Luckie
Das ändert nichts an der Tatsache, dass ich so wohl das Source Verzeichnis durchsuchen muss, als auch das Backup Verzeichnis oder habe ich da jetzt einen Denkfehler?

Du musst natürlich beide Ordner durchsuchen, brauchst aber den Großteil des Codes nicht doppelt zu schreiben, sondern nur den relevanten Teil.

mfG
mirage228

Luckie 3. Jun 2005 14:56

Re: Pegasus: Einfaches backup Programm
 
OK, das wär eine Optimierumng des Codes. Bringt aber nichts an Performance.

sECuRE 3. Jun 2005 17:43

Re: Pegasus: Einfaches backup Programm
 
Hi,

wie versprochen hab ich nun das Programm getestet, als Quelle diente eine Netzwerkfreigabe und als Ziel mein lokaler Ordner. Das funktionierte soweit problemlos. Wie von anderen schon erwähnt braucht das Programm aber recht lange bei großen Ordnern. Vielleicht könnte man vor dem eigentlichen Vergleichen eine Prüfsumme wie CRC32 erstellen, da muss nicht so viel von der Datei gelesen werden AFAIR, das spart Bandbreite (beim Netzwerkvergleichen)/bringt Performance. Wenn du an der Idee gefallen findest, kann ich dir gerne den nötigen Code zum CRC32-berechnen zukommen lassen.

Kritik:
- Das Programm "flasht" in der Taskleiste, auch wenn es im Vordergrund ist (also das aktive Fenster). Sollte so ja nicht sein, denke ich?

Vorschläge:
- Wenn sich Dateien ändern würde ich ein anderes Icon nutzen, als das grüne Plus, was ja auch für komplett neue Dateien verwendet wird.
- Dateien vom Vergleichen ausschließen wäre nett (z.B. *.dcu ;))
- Automatisch abgleichen und mehrere Ordner zum abgleichen angeben, alternativ halt Parametersupport und 'ne Batch-Datei, ist aber nicht so schön.

Kommt noch eine Hilfedatei zu dem Programm?

cu

Luckie 3. Jun 2005 17:50

Re: Pegasus: Einfaches backup Programm
 
Zitat:

Zitat von sECuRE
Hi,

wie versprochen hab ich nun das Programm getestet, als Quelle diente eine Netzwerkfreigabe und als Ziel mein lokaler Ordner. Das funktionierte soweit problemlos. Wie von anderen schon erwähnt braucht das Programm aber recht lange bei großen Ordnern. Vielleicht könnte man vor dem eigentlichen Vergleichen eine Prüfsumme wie CRC32 erstellen, da muss nicht so viel von der Datei gelesen werden AFAIR, das spart Bandbreite (beim Netzwerkvergleichen)/bringt Performance. Wenn du an der Idee gefallen findest, kann ich dir gerne den nötigen Code zum CRC32-berechnen zukommen lassen.

Ich biolde Hashes über die Dateien um die geänderten zu ermitteln. dabei benutze ich einen optimierten MD5 Hash von Assarbad.

Zitat:

Kritik:
- Das Programm "flasht" in der Taskleiste, auch wenn es im Vordergrund ist (also das aktive Fenster). Sollte so ja nicht sein, denke ich?
Doch soll so sein. das tut es, wenn es mit der Dateiliste oder mit dem Abgleichen fertig ist. Wenn ich es benutze, dann arbeite ich meist in einem anderem fenster weiter und würde dann auch keine Messagebox-Benachrichtigung von dem Programm bemerken. das war der Hintergedanke dabei.

Zitat:

Vorschläge:
- Wenn sich Dateien ändern würde ich ein anderes Icon nutzen, als das grüne Plus, was ja auch für komplett neue Dateien verwendet wird.
Vorschlag? ;)
Zitat:

- Dateien vom Vergleichen ausschließen wäre nett (z.B. *.dcu ;))
... und eventuell ganze Ordner oder so. Hab eich auch schon drangedacht, war aber bisher zu faul mir über eine möglioche Lösung Gedanken zu machen.
Zitat:

- Automatisch abgleichen und mehrere Ordner zum abgleichen angeben, alternativ halt Parametersupport und 'ne Batch-Datei, ist aber nicht so schön.
Ich wollte "Jobs" unterstützen: Man speichert einmal Quelle und Ziel unter einem Job-Namen ab und dieser Job kann dann wieder geladen werden oder so.
Zitat:

Kommt noch eine Hilfedatei zu dem Programm?
Langsam, wir sind erst beim Testen, ob alle Dateien korrekt erkannt werden. ;)

sECuRE 3. Jun 2005 18:42

Re: Pegasus: Einfaches backup Programm
 
Hi,

nunja, das Flashen sollte aber nur dann eintreten, wenn das Programm nicht im vordergrund ist. Also if (not Application.Active) then ;). Die Sache mit den Jobs hört sich gut an. Der Vorschlag war, ein anderes Icon zu benutzen um den Unterschied zu kennzeichnen. War das unklar formuliert? Finde es eigentlich verständlich ;).

cu


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 Uhr.
Seite 3 von 11     123 45     Letzte »    

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