Avatar billede jisch Mester
08. juni 2001 - 00:18 Der er 7 kommentarer og
1 løsning

Kopier hel mappe

Hej,
Jeg mangler en rutine/program/procedure/dialog der kan kopiere en hel mappe fra et sted til et andet (evt. med undermapper). Eksisterer mappen skal man kunne slette indholdet. Er der mon nogen der kender en link eller en artikkel, der kan afhjælpe dette? Jeg anvender Delphi 5.

Hilsen Jirsch
Avatar billede ziron Nybegynder
08. juni 2001 - 00:22 #1
brug dette fra borrisholt:

http://www.borrisholt.com/FileIO/DelphiSource/Filehandling.zip

den kan kopirer og det med at slette kan du bruge:

RemoveDir

/ZIRON
Avatar billede martinlind Nybegynder
08. juni 2001 - 00:26 #2
Du kan evt. Bruge FindFirst /FindNext

/Martin
Avatar billede ziron Nybegynder
08. juni 2001 - 00:27 #3
der ligger også delete funktion med det filehandling fra borrisholt...

så er det jo løst, JUBII...

/ZIRON
Avatar billede martinlind Nybegynder
08. juni 2001 - 00:31 #4
Eller bruge dette :

procedure ScanFiles( const aPath : String; Subs : Boolean; const L : TStrings );
VAR
  S  : TSearchRec;
  CPath : String;
begin
  ChDir(aPath);
  GetDir(0,CPath);

  if FindFirst(IncludeTrailingBackslash(CPath)+\'*.*\',faANYFILE,S) = 0 then
  repeat
      if ( S.Attr and faSysFile = 0 ) and ( S.Attr and faDIRECTORY = 0 ) and
        ( S.Attr and faVolumeID = 0 ) and ( S.Name[1] <> \'.\' ) and ( S.Name[1] <> \'..\' ) then
      begin
        // Do the stoff here
          L.Add(IncludeTrailingBackslash(CPath)+S.FindData.cFileName);
      end;
  until FindNext(S) <> 0;
  FindClose(S);

  if Subs and ( FindFirst(\'*.*\',faDIRECTORY,S) = 0 ) then
  repeat
      if ( S.Attr and faDIRECTORY <> 0 ) and ( S.Name[1] <> \'.\' ) and ( S.Name[1] <> \'..\' ) then
      begin
        ScanFiles(IncludeTrailingBackslash(CPath)+S.Name,Subs,L);
        ChDir(\'..\');
      end;
  until FindNext(S) <> 0;
  FindClose(S);
end;


VAR
  L : TStringList;

begin
  L := TStringList.Create;
  ScanFiles(\'C:\\Temp\\\',TRUE,L);
  // L indeholder alle filler med path
end;

/Martin
Avatar billede sjakal Nybegynder
08. juni 2001 - 13:18 #5
Martin,,,,lille fejl i din procedure ;)

\"and ( S.Name[1] <> \'..\' ) then\"

Position [1] kan vel umuligt indeholde 2 chars ;)
Avatar billede martinlind Nybegynder
08. juni 2001 - 13:45 #6
Rigtig, lidt gl. kode jeg må lige checke om jeg har fået rettet det der hvor jeg bruger det, meeen.. mon ikke jeg har :)

Takker for opmærksomheden

/Martin
Avatar billede sjakal Nybegynder
08. juni 2001 - 14:42 #7
En anden ting jeg kom i tanken om er, at et bibliotek som er \"ok\", godt kan have et \'.\' på første position i NTFS.

Så de 2 [1]\'ere burde nok fjernes.
Selvom det nok er temmelig sjældent med et bib (ex. \'.hejhej\') så er det meget rart at få koden på plads ;)
Avatar billede ziron Nybegynder
25. august 2001 - 16:31 #8
takker for point, og håber du kan bruge det?

/ZIRON
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester