Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ordner downloaden & syncronisieren (https://www.delphipraxis.net/100478-ordner-downloaden-syncronisieren.html)

Puddy 28. Sep 2007 22:34


Ordner downloaden & syncronisieren
 
So, nun hab ich mal wieder eine Frage.

Folgendes ist die Aufgabenstellung:

Ein Ordner auf der Festplatte enthält Dateien und Untderordner (in denen wiederum auch Dateien sind). Jetzt müssen aber einige dieser
Dateien ausgetauscht werden. Die Daten, die man austauschen muss leigen auf einem FTP bereit, und ändern sich von Zeit zu Zeit. Da zu
den Dateien auch neue dazu kommen, kann ich keine feste Pfad-Angabe machen.

Das heisst, ich müsste den Ordner, der online auf dem FTP liegt, komplett mit der dort vorhandenen Strucktur herunterladen und
anschließend die existierenden Dateien überschreiben.

Die Downloadfunktion habe ich bereits fertig, aber ich hab keine Ahnung, wie ich jetzt das Realisieren soll. Kann mir da bitte jemand
einen kleinen Denkanstoß geben? Ich komm da einfach nicht weiter...

cherry 8. Okt 2007 14:28

Re: Ordner downloaden & syncronisieren
 
also wenn du die download funktion schon implementiert hast, musst du ja nur noch das zeuchs an den richtigen ort komperen?!
verwende doch robocopy dazu, hab ich auch schon getan... schnell, einfach, simpel...

http://www.msu-hb.de/system/system/robocopy.htm

ich hoffe ich konnte dir weiterhelfen.

gruss enemyleft

Puddy 8. Okt 2007 17:35

Re: Ordner downloaden & syncronisieren
 
Schon mal Danke für deine Antwort ;)

Mein Problem ist ja nicht, dass ich die Dateien austauschen muss, sondern dass ich irgendwie eine Liste der Dateien erstellen muss, die online auf dem FTP gelagert sind. Und die Liste muss ich dann auch herunterladen. ICh hab nur keine Ahnung, wie ich diese Liste erstellen soll.

cherry 9. Okt 2007 06:29

Re: Ordner downloaden & syncronisieren
 
Ok dann hilft dir dies eventuell weiter. Ich hab mal diese DLL erstellt um Dateistrukturen in eine DB zu schreiben.
Das Problem ist ja hauptsächlich das dies rekursiv sein muss. Hier also die DLL die dir sicherlich weiter hilft.

Delphi-Quellcode:
library analyse;

{ enemyleft[at]gmail.com - 13.08.2007 }

uses
  SysUtils,
  Classes;

{$R *.res}

procedure GetTreeList(Directory: String; const Mask: String;
                              dList, fList, sList, tList, doList, dosList,
                              aList: TStrings;
                              WithSubDirs, ClearList: Boolean) stdcall;
var
  DirSize: Integer;
procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
begin

  if FindFirst(Directory + Mask, faAnyFile and not faDirectory, SR) = 0 then
  begin
    try
      repeat
        dList.Add(Directory);
        fList.Add(SR.Name);
        sList.Add(IntToStr(SR.Size));
        tList.Add(IntToStr(SR.Time));
        aList.Add(IntToStr(SR.Attr));
        DirSize := DirSize + SR.Size;
      until FindNext(SR) <> 0;
    finally
      doList.Add(Directory);
      dosList.Add(IntToStr(DirSize));
      DirSize := 0;
      FindClose(SR);
    end;
  end;

  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if ((SR.attr and faDirectory) = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  DirSize := 0;
  dList.BeginUpdate;
  fList.BeginUpdate;
  sList.BeginUpdate;
  tList.BeginUpdate;
  doList.BeginUpdate;
  dosList.BeginUpdate;
  aList.BeginUpdate;
  try
    if ClearList then
    begin
      dList.Clear;
      fList.Clear;
      sList.Clear;
      tList.Clear;
      doList.Clear;
      dosList.Clear;
      aList.Clear;
    end;
    if Directory = '' then Exit;
    if Directory[Length(Directory)] <> '\' then
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    dList.EndUpdate;
    fList.EndUpdate;
    sList.EndUpdate;
    tList.EndUpdate;
    doList.EndUpdate;
    dosList.EndUpdate;
    aList.EndUpdate;
  end;
end;

exports
  GetTreeList;

begin

end.

Puddy 9. Okt 2007 18:38

Re: Ordner downloaden & syncronisieren
 
Danke, das kann ich wirklich gebrauchen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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