ich programmiere grade ein Programm, welches meine Downloads (welche älter als zwei Tage sind) automatisch löscht.
Alles funktioniert, bis auf das löschen selber. Es wäre echt nett, wenn ihr mir Helfen könnt

Hier habt ihr den Quellcode:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Label1: TLabel;
ListBox1: TListBox;
Timer1: TTimer;
Timer2: TTimer;
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Timer1StartTimer(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
n: Integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormShow(Sender: TObject);
begin
end;
procedure TForm1.Timer1StartTimer(Sender: TObject);
begin
Form1.Visible:=false;
end;
procedure Anzeigen();
var
SR: TSearchRec;
dir: String;
Anzahl: Integer;
begin
Form1.Visible:= true;
Form1.Timer1.Enabled:= false;
Form1.Listbox1.Clear;
Anzahl:=0;
if DirectoryExists('C:\Windows\Temp\Download')= false then
begin
CreateDir('C:\Windows\Temp\Download');
end;
if DirectoryExists('C:\Windows\Temp\Download')= true then
begin
dir := ('C:\Windows\Temp\Download\');
if FindFirst(dir+'*.*',faAnyFile,SR) = 0 then
begin
repeat
if (sr.name='.') or (sr.name='..')
then continue
else
begin
If(Now-FileDateToDateTime(sr.Time)>2) then
begin
Form1.ListBox1.Items.add(sr.name + ' ' + DateToStr(sr.Time)+'--> Wird gelöscht!');
end
else
begin
Form1.ListBox1.Items.add(sr.name + ' ' + DateToStr(sr.Time)+'-->Bleibt erhalten!');
end;
end;
Anzahl:= Anzahl+1;
until FindNext(SR)<>0;
FindClose(SR);
end;
Form1.Timer2.Enabled:=true;
if Anzahl*2<=10
then n:= 10
else n:= Anzahl*2 ;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Anzeigen();
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
SR: TSearchRec;
dir: String;
begin
n:= n-1 ;
Label1.caption:= 'Verbleibende Zeit:'+ ' ' + InttoStr(n) + ' Sekunden';
if n=0 then
begin
Timer2.enabled:=false;
Form1.Label1.caption:='';
if DirectoryExists('C:\Windows\Temp\Download')= false then
begin
CreateDir('C:\Windows\Temp\Download');
end;
if DirectoryExists('C:\Windows\\Temp\Download')= true then
begin
dir := ('c:\Windows\Temp\Download\');
if FindFirst(dir+'*.*',faAnyFile,SR) = 0 then
begin
repeat
if (sr.name='.') or (sr.name='..')
then continue;
If(Now-FileDateToDateTime(sr.Time)<2) then //Absicht, damit ich nicht warten muss und testen kann ;D
begin
if DeleteFile(sr.name) then
begin
ShowMessage(dir+sr.name+' deleted OK');
Form1.Listbox1.Items.add(dir+sr.name + ' wurde erfolgreich gelöscht!');
end
else
begin
ShowMessage(dir+sr.name+' not deleted');
Form1.ListBox1.Items.add(dir+sr.name + ' konnte nicht gelöscht werden!');
end;
end
else continue;
until FindNext(SR)<>0;
FindClose(SR);
Form1.Visible:=false;
Form1.Timer1.Enabled:=true;
end;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.enabled:=true;
Timer2.Enabled:=false;
Form1.Visible:=false;
end;
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
ShowMessage('Zugriff Verweigert!');
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
Canclose := false; //Damit man nicht schließen kann!
ShowMessage('Zugriff Verweigert!');
end;
end.
Grüße
Trotro