Slet en mappe og lav den igen.

Tags:    delphi

User
Bruger #633 @ 04.11.02 14:39
Jeg har brug for en motode til at tømme en mappe for andre mapper og filer.
Jeg har forsøgt dette:

if directoryexists('C:\\Test') then
begin
removedir('C:\\Test');
end;

if not directoryexists('C:\\Test')then
begin
createdir('C:\\Test');
end;

end;

Men removedir kan ikke slette en mappe med inhold.

PS. jeg vil gerne give flere point men jeg ønsker ikke miste så mange point vis jeg for svar, som før.



8 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Denne funktion sletter en mappe rekursivt - men lader mappen du angiver blive...

<pre>
Procedure DelFolder(Folder: String);
Var
hFile: Integer;
fd: _WIN32_FIND_DATA;
bFile: Boolean;
Begin
Folder := IncludeTrailingBackslash(Folder);
hFile := FindFirstFile(PChar(Folder+'*.*'), fd);
While bFile do
begin
If fd.cFilename[0] <> '.' Then
Begin
If (fd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 Then
Begin
DelFolder(Folder+String(fd.cFileName));
RmDir(Folder+String(fd.cFileName));
End
else
begin
DeleteFile(Folder+String(fd.cFileName));
end;
end;
bFile := FindNextFile(hFile, fd);
End;
Windows.FindClose(hFile);
end;
</pre>
Eksempel:
<pre>
DelFolder('c:\\test');
</pre>

Håber det kan bruges!

Mvh,

Thomas Nielsen



Jeg har brug for en motode til at tømme en mappe for andre mapper og filer.
Jeg har forsøgt dette:

if directoryexists('C:\\Test') then
begin
removedir('C:\\Test');
end;

if not directoryexists('C:\\Test')then
begin
createdir('C:\\Test');
end;

end;

Men removedir kan ikke slette en mappe med inhold.

PS. jeg vil gerne give flere point men jeg ønsker ikke miste så mange point vis jeg for svar, som før.


well directoryexists returnerer en boolean, så måske skulle du prøve:
<pre>
If DirectoryExists('C:\\test\\') = True then RemoveDir('c:\\test\\') else CreateDir('C:\\test\\');
</pre>

-
neuroman? det' da mig :D
Aloha - Er du fresh???





well directoryexists returnerer en boolean, så måske skulle du prøve:
<pre>
If DirectoryExists('C:\\test\\') = True then RemoveDir('c:\\test\\') else CreateDir('C:\\test\\');
</pre>

-
neuroman? det' da mig :D
Aloha - Er du fresh???


Men det sletter ikke indholdet :), rettede bare din fejl
-
neuroman? det' da mig :D
Aloha - Er du fresh???



Lige for at følje op...

If DirectoryExists('C:\\test\\') then RemoveDir('c:\\test\\') else CreateDir('C:\\test\\');

...at kontrollere om en boolean er sand eller falsk giver ingen mening.



Lige for at følje op...

If DirectoryExists('C:\\test\\') then RemoveDir('c:\\test\\') else CreateDir('C:\\test\\');

...at kontrollere om en boolean er sand eller falsk giver ingen mening.


Jeg kan ik finde noget der hedder RemoveDir alt det der Why ???
----------------------------------------------------
| |
| Casper hedder jeg ikke for ingenting vel. |
| |
----------------------------------------------------



Jeg kan ik finde noget der hedder RemoveDir alt det der Why ???

RemoveDir, CreateDir ligger i "SysUtils"
RmDir, MkDir ligger i "System"

Har du dem under din Uses sektion ?

Mvh,

Thomas Nielsen



Lige for at følje op...

If DirectoryExists('C:\\test\\') then RemoveDir('c:\\test\\') else CreateDir('C:\\test\\');

...at kontrollere om en boolean er sand eller falsk giver ingen mening.


Hvad har man så booleans til ?... jeg indrømmer at det er ligegyldigt i denne situration, men booleans er en smart ting der er opfundet til at tjekke om noget er sandt eller falsk, så det giver jo en mening et eller andet sted ?
-
neuroman? det' da mig :D
Aloha - Er du fresh???




Hvad har man så booleans til ?... jeg indrømmer at det er ligegyldigt i denne situration, men booleans er en smart ting der er opfundet til at tjekke om noget er sandt eller falsk, så det giver jo en mening et eller andet sted ?


Det han mente var at det er unødvendigt at have "If X = True Then..." da "If X Then" gør det samme. Jeg er dog ikke helt enig, da en helt klar sammenligning kan gøre kodens formål noget tydeligere for en der ikke er helt inde i sproget.

Mvh,

Thomas Nielsen



t