Avatar billede vint Nybegynder
12. februar 2008 - 18:31 Der er 4 kommentarer og
3 løsninger

Tjek om filer eksisterer og slet filer

Hej.

Jeg har brug for lidt hjælp til at tjekke, om nogle filer eksisterer samt i anden henseende at SLETTE nogle filer.

Det drejer sig om, at mit program kan oprette nogle filer med data. Filnavne og beskrivelse er lagret i en simpel csv-fil som hentes ind i en grid, blot for at gøre det nemmere, når filerne skal åbnes (at man kan overskue, hvilke filer der burde være der).

Problemet som jeg ser det er, at filerne muligvis ikke eksisterer (hvis de er flyttet eller slettet manuelt i windows fx). Derfor skal jeg bruge hjælp til at tjekke, om filerne eksisterer, inden jeg forsøger at hente data fra dem og give en besked, hvis de ikke findes. Jeg kender biblioteket.

Dernæst burde jeg også have en funktion, der kan slette disse filer igen fra programmet, således både csv-filen med filoversigten og selve filen bliver slettet. csv-delen kan jeg selv klare, men hvordan sletter jeg selve filen?
Avatar billede a_nor Nybegynder
13. februar 2008 - 08:25 #2
Hej Vint,  kan du bruge dette ??? 

  TForm1 = class(TForm)
    ButtonSletFil: TButton;
    ButtonTjekOgBrug: TButton;
    ButtonAfslutBrug: TButton;
    procedure ButtonSletFilClick(Sender: TObject);
    procedure ButtonTjekOgBrugClick(Sender: TObject);
    procedure ButtonAfslutBrugClick(Sender: TObject);
  private
    { Private declarations }
    f: file;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ButtonSletFilClick(Sender: TObject);
begin
  assignfile(f,'c:\filnavn.csv');
  try
    erase(f);
  except
    messagebox(0,'Filen .. findes ikke - eller er i brug','FEJL',0);
    end;
end;

procedure TForm1.ButtonTjekOgBrugClick(Sender: TObject);
begin
  assignfile(f,'c:\filnavn.csv');
  try
    reset(f);
  except
    messagebox(0,'Filen .. findes ikke','FEJL',0);
    end;

end;

procedure TForm1.ButtonAfslutBrugClick(Sender: TObject);
begin
  try
    closefile(f);
  except
    messagebox(0,'Filen var IKKE åben ','FEJL',0);
    end;
end;

Du kan også teste med {$i-} {$i+} f.eks.

{$i-}
reset(f);
{$i+}
if IOResult<>0 then
  Fejlmeld
Avatar billede nca Juniormester
13. februar 2008 - 08:58 #3
Brug funktionen FileExists
If FileExists(Filnavn) then
  slet filen
Avatar billede a_nor Nybegynder
13. februar 2008 - 10:17 #4
FileExiste() og Deletefile() findes i sysutils.

Fordelen ved de andre metoder er at du kan teste på fejlkoderne.
Avatar billede vint Nybegynder
15. februar 2008 - 09:49 #5
Hej a nor og snowball.

Vil i smide et svar, så vil jeg fordele points til jer alle
Avatar billede a_nor Nybegynder
15. februar 2008 - 11:34 #6
Håber du fik fundet en god løsning :)
Avatar billede snowball Novice
15. februar 2008 - 12:45 #7
OK
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