Announcement

Collapse
No announcement yet.

Versioniertes Kopieren eines Verzeichnises mit Delphi 7

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Versioniertes Kopieren eines Verzeichnises mit Delphi 7

    Hallo,

    ich muss mit Delphi 7 folgendes Problem lösen.

    Problem:
    a) kopiere Verzeichnis A nach B (inkl. aller Dateien und Subdirs)
    b) kopiere alle die Dateien von B nach A, deren FileVersion in B größer ist als in A. (inkl der Dateien in den SubDirs)

    Kann mir dabei jemand helfen oder einen guten Tipp geben ?
    Gibt es hierfür evtl. schon ein Tool ?

    Dank im voraus.

    Car.

  • #2
    Hi Carsten,
    zwei Dinge:
    - rekursiv lesen
    - Fileversion lesen

    zu 1)
    Liest rekursiv (durch alle Unterverzeichnisse)

    var VerzListe : TStringList;

    function VerzGroesse(Verzeichnis:string):longint;
    var SR : TSearchRec;
    Groesse : longint;
    begin
    Groesse:=0;
    if Verzeichnis[length(Verzeichnis)]<>'\' then
    Verzeichnis:=Verzeichnis+'\';
    if FindFirst(Verzeichnis+'*.*',$3F,SR)=0 then begin
    repeat
    if ((SR.Attr and faDirectory)>0) and (SR.Name<>'.') and (SR.Name<>'..') then
    Groesse:=Groesse+VerzGroesse(Verzeichnis+SR.Name)
    else
    Groesse:=Groesse+SR.Size;
    if (SR.Name<>'.') and (SR.Name<>'..') then
    VerzListe.Add(Verzeichnis+SR.Name);
    until FindNext(SR)<>0;
    FindClose(SR);
    end;
    Result:=Groesse;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    VerzListe:=TStringList.Create;
    Label1.Caption:=IntToStr(VerzGroesse('C:\Programme '))+' Byte';
    ListBox1.Items.Assign(VerzListe);
    VerzListe.Free;
    end;

    zu 2)
    dies solltest Du natürlich im Durchlauf von 1) mit einbauen

    function Dateidatum(Dateiname:string):TDateTime;
    var SR : TSearchRec;
    begin
    if FindFirst(Dateiname,faAnyFile,SR)=0 then begin
    Result:=FileDateToDateTime(SR.Time);
    FindClose(SR);
    end;
    end;

    HTH, Michae

    Comment

    Working...
    X