Avatar billede elhamame Nybegynder
19. april 2001 - 19:58 Der 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?



elhamame

Avatar billede abpdk Nybegynder
19. april 2001 - 20:11 #1
SAY WHAT???
Avatar billede delphidaner Nybegynder
19. april 2001 - 20:20 #2
Mener at funktionen hedder DeleteFile.

DeleteFile(\'fil.dat\');
Avatar billede abpdk Nybegynder
19. april 2001 - 20:23 #3
Forstod du spørgsmålet delphidaner???
Avatar billede kaspikov Nybegynder
19. april 2001 - 20:26 #4
Hvad så med at få det til at slette \"de ligegyldige filer\" inden de kommer på hardisken?
Avatar billede kaspikov Nybegynder
19. april 2001 - 20:26 #5
Hvad så med at få det til at slette \"de ligegyldige filer\" inden de kommer på hardisken?
Avatar billede elhamame Nybegynder
19. april 2001 - 20:29 #6
hmmm... jeg prøver lige
Avatar billede elhamame Nybegynder
19. april 2001 - 20:30 #7
de skal først på harddisken og så slettes når jeg afslutter programmet
Avatar billede elhamame Nybegynder
19. april 2001 - 20:32 #8
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
Avatar billede abpdk Nybegynder
19. april 2001 - 20:37 #9
Du skal bare lagre filnavnene i et string-array og så bruge DeleteFile som delphidaner foreslog (den er god nok).

PS: Du skulle nok lige overveje at gennemlæse før du trykker på udfør...

MVH abpdk
Avatar billede elhamame Nybegynder
19. april 2001 - 20:40 #10
hvordan lagre jeg så navnene.....jeg er ikke en pro til dette..jeg er ny i delphi.

navnene er

msound.dll
gfx.dll

de skal slettes når der afsluttes
Avatar billede abpdk Nybegynder
19. april 2001 - 20:44 #11
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...
Avatar billede elhamame Nybegynder
19. april 2001 - 20:48 #12
det virker jo.....men kan man lave den om til find msound.dll? eller gør den det allered?
Avatar billede abpdk Nybegynder
19. april 2001 - 20:49 #13
Hvad mener du med \'lave den om\'...lave hvad om?
Avatar billede abpdk Nybegynder
19. april 2001 - 20:49 #14
Hvad mener du med \'lave den om\'...lave hvad om?
Avatar billede elhamame Nybegynder
19. april 2001 - 20:51 #15
sådan så den søger efter filen...det er ikke sikkert at den ligger i samme dir altid
Avatar billede elhamame Nybegynder
19. april 2001 - 20:51 #16
det kommer an på en OS
Avatar billede abpdk Nybegynder
19. april 2001 - 20:56 #17
Prøv at søge i Delphi hjælpen under FindFirst...koden for at finde en fil fylder en del mere end bare DeleteFile...

MVH abpdk
Avatar billede delphidaner Nybegynder
19. april 2001 - 21:26 #18
apbdk << Ja, jeg forstod spørgsmålet, men jeg vil give dig ret i, at den var svær at forstå.

elhamame << Hvis du skal have hjælp til at søge, så bare sig til.
Avatar billede elhamame Nybegynder
19. april 2001 - 21:31 #19
det vil jeg godt hvis du ved hvordan
Avatar billede delphidaner Nybegynder
19. april 2001 - 21:38 #20
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.
Avatar billede elhamame Nybegynder
19. april 2001 - 21:44 #21
okay...fint med mig
Avatar billede delphidaner Nybegynder
20. april 2001 - 07:35 #22
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.
Avatar billede delphidaner Nybegynder
20. april 2001 - 15:41 #23
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;
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