Avatar billede kennethv Nybegynder
13. oktober 2014 - 15:25 Der er 10 kommentarer og
1 løsning

Kan denne function bruges til at slette mapper hvor indholdet er mere end 255 karakter.

Hejsa.

Jeg har fundet denne function på nettet, men er lidt i tvivl om den kan bruges til at slette mapper hvor stien er mere end 255 karakter.

Kan nogen hjælpe mig med at bekræfte om den kan?

Jeg har prøvet at putte den ind i mit program, men der sker ikke rigtig noget. Jeg kan ikke gennemskue om det går i stå pga. for lange stinavne,

Function DelTree(DirName : string): Boolean;
var
  SHFileOpStruct : TSHFileOpStruct;
  DirBuf : array [0..255] of char;
begin
  try
    Fillchar(SHFileOpStruct,Sizeof(SHFileOpStruct),0) ;
    FillChar(DirBuf, Sizeof(DirBuf), 0 ) ;
    StrPCopy(DirBuf, DirName) ;
    with SHFileOpStruct do begin
      Wnd := 0;
      pFrom := @DirBuf;
      wFunc := FO_DELETE;
      fFlags := FOF_ALLOWUNDO;
      fFlags := fFlags or FOF_NOCONFIRMATION;
      fFlags := fFlags or FOF_SILENT;
    end;
    Result := (SHFileOperation(SHFileOpStruct) = 0) ;
  except
  Result := False;
end;
end;
Avatar billede spil2vind Nybegynder
13. oktober 2014 - 15:51 #1
Ovenstående sletter vel sagtens kun et bibliotek ad gangen?
Avatar billede kroning Nybegynder
13. oktober 2014 - 16:01 #2
Er max længde i windows ikke ca. 255 tegn?

Men ellers kan den ikke, men ved at rette DirBuf : array [0..255] of char; til f.eks. DirBuf : array [0..1024] of char; så bude det virke op til 1025 tegn.
Avatar billede spil2vind Nybegynder
13. oktober 2014 - 16:07 #3
Det er min opfattelse at windows ikke tillader foldernavne med 256 karakter, det er min opfattelse at spørgsmålet går på hele folder strukturen
Avatar billede kennethv Nybegynder
14. oktober 2014 - 08:06 #4
Du kan sagtens gemme i foldere som ligger på mere end 255.

Hvis du gemmer fra word vil den tage dit nuværende folder og hvis den sti allerede ligger er på 255 og du opretter en ny folder ser word det ikke som at stien er mere end de 255. Her hvor jeg arbejder er der mange brugere der gør det på denne måde.

Håber at det gav mening.

:)
Avatar billede spil2vind Nybegynder
14. oktober 2014 - 14:50 #5
OK så jeg opfattede det korrekt, måske du skulle beskrive hvad det er du ønsker at gøre, for ønsker du at slette en folder totalt skal du ud i noget rekursiv kode.
Avatar billede kroning Nybegynder
14. oktober 2014 - 14:55 #6
spil2vind > Forkert, det kræver ikke noget rekursiv kode at slette en folder total, ovenstående funktion DelTree virker fint selv om folderen ikke er tom.
Avatar billede spil2vind Nybegynder
14. oktober 2014 - 15:02 #7
Hvad er så grunden til at den ikke virker?
Avatar billede kroning Nybegynder
14. oktober 2014 - 15:15 #8
Som den er understøtter den kun op til 255 tegn men det kan jo let rettes.
Men jeg har testet den og her virker den fint. (Windows 8)
Avatar billede kennethv Nybegynder
15. oktober 2014 - 09:38 #9
Jeg fik osse testet den med en folder, hvis indhold var mere end 255. Og det virker. Tror bare ikke at jeg havde tålmodighed nok, desværre. Undskyld ulejligheden.
Avatar billede kennethv Nybegynder
13. marts 2015 - 14:00 #10
Mangler svar på denne.
Avatar billede kroning Nybegynder
13. marts 2015 - 14:26 #11
svar
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



Seneste spørgsmål Seneste aktivitet
I dag 06:10 Excel åbner fil i kæmpe format Af Aske i Excel
I går 22:00 Datafordeler Af Lsk i PHP
I går 12:37 Summere beløb pr. dato Af TTA i Excel
31/1022:44 Tilslutte chassic fans Af viking69 i PC
31/1020:28 LED lysstofrør Af ErikHg i Fri debat