19. april 2001 - 19:58Der er
22 kommentarer og 1 løsning
slette fil
hmmmm.... Ja har et delphi program, som opretter nogen ligegyldige filer... kan jeg lave et ondestroy find filerne(de hedder altid det samme) delete files?
du skriver \"\" om lige gyldige filer...tror du jeg har gang i noget ødelæggende eller lignende...mange programmer bruger gør det samme de ville måske have sagt... remove eller clear
Hvis der kun er 2 er det endnu nemmere. Så behøver du slet ikke bruge et array. Det eneste du skal gøre er at sige DeleteFile(\'msound.dll\') og DeleteFile(\'gfx.dll\'). Du kan prøve at lægge dem i Form.onClose eller Form.onClose...
OK, jeg kan lave en procedure til dig, som søger efter filen, men det bliver nok ikke i aften (sidder ikke lige med Delphi ved mig). Jeg kan ordne det i morgen.
Forresten.... Skal det være på alle drev (eller alle harddisk-drev), eller skal man bare angive et drev?
Jeg laver det, når jeg kommer hjem fram skole. Koden kommer til at se noget \"langhåret\" ud, så jeg skal nok sørge for at sætte en masse kommentarer. Du er sikkert også interesseret i at vide, hvordan koden fungerer.
Jeg har lavet det, så det søger på alle harddiskdrev på computeren. Her er det:
procedure SearchAndDeleteFile(FileName: TFileName); // Denne procedure sletter alle filer på alle harddiskdrev, der har filnavnet, // der ligger i FileName
var I: Integer; S: string;
procedure SearchDir(Dir: string); // Søger i en mappe + undermapper efter filen
// SearchDir er en rekursiv procedure, dvs. den kalder sig selv. Det skal man // være lidt varsom med, da man nemt kan få et program til at gå i stå med en // lille fejl i proceduren.
var I: Integer; SR: TSearchRec; // Filoplysninger gemmes i en TSearchRec record
begin Application.ProcessMessages; // Lad programmet svare på Windows messages // under søgningen, så den ikke \"fryser\".
// FindFirst finder den første fil i en mappe, og FindNext finder den næste. // De returnerer begge 0, hvis det lykkedes, men en fejlkode, hvis der sker // en fejl, eller der ikke er flere filer i mappen.
// Det udnytter vi ved at lave en løkke, som gentages, indtil der opstår en // fejl, ved at gemme fejlkoden i variablen I:
// Vi søger efter alle filer (*.*) for at få undermapperne med: I := FindFirst(Dir + \'\\*.*\', faAnyFile, SR); while I = 0 do begin // Hver gang denne løkke gennemlæbes, så er der en ny fil i SR.
// Frasorter systemmapperne \'.\' og \'..\' if (SR.Name <> \'.\') and (SR.Name <> \'..\') then begin // Undersøg om det fundne element i mappen er en fil eller en mappe if SR.Attr and faDirectory > 0 then // Hvis directory-flaget er sat, så // har vi fundet en mappe. SearchDir(Dir + \'\\\' + SR.Name) // Søg i undermappen else // Ellers er det en fil, programmet har fundet begin if CompareText(FileName, SR.Name) = 0 then // Er det den rigtige fil? DeleteFile(Dir + \'\\\' + SR.Name); // Hvis ja, så slet den. end; end;
// Find næste fil I := FindNext(SR); end;
// Frigør ressourcer brugt ved FindFirst/FindNext FindClose(SR); end;
begin for I := 0 to 25 do // Check for harddiskdrev begin S := Chr(Ord(\'A\') + I) + \':\'; // Giver f.eks. \'A:\', \'B:\', osv. if GetDriveType(PChar(S)) = DRIVE_FIXED then // Hvis det er en harddisk... SearchDir(S); // ...så søg på drevet end; end;
Synes godt om
Ny brugerNybegynder
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.