Autor Beitrag
green-sound
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: So 20.04.03 16:50 
Hallo erstmal :D

Ich habe folgendes Problem:

Ich soll ein kleines Programm schreiben das alle Verzeichnisse eines Laufwerkes die älter als 2 Wochen sind löscht.

Die Procedur zum löschen der Verzeichnisses hab ich schon!!

Wie krieg ich jetzt aber raus welches Verzeichnis älter als 2 Wochen ist!

Hoffe ihr könnt mir weiterhelfen...

mfg green-sound
Blackout
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 64



BeitragVerfasst: Mo 21.04.03 06:25 
hi green-sound,

hast du denn schon eine Funktion womit du Ordner auf einem Laufwerk suchen kannst?
Wenn nicht benutze die Suchfunktion im Forum ich denke da lässt sich was passendes finden.

Um das Erstellungsdatum eines Ordners zu bekommen kannst du folgende Funktion benutzen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Function GetFileDate(TheFile: String): TDateTime;

Var
  SearchRec: TSearchRec;
  DT: TFileTime;
  ST: TSystemTime;
  
Begin

  Result:= 0;
  Try
    If (FindFirst(TheFile, faAnyFile, SearchRec) = 0) Then
      Begin
        FileTimeToLocalFileTime(SearchRec.FindData.ftCreationTime, DT);
        FileTimeToSystemTime(DT, ST);
        Result:= EncodeDate(st.wYear, st.wMonth, st.wDay);
      End;
  Finally
    FindClose(SearchRec);
  End;
  
End;


Und so könnte man die Funktion nutzen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Button1Click(Sender: TObject);

Var
  FileDate: TDate;
  Directory: String;  

Begin

  Directory:= 'C:\Windows';  // Beispiel
  FileDate:= StrToDate(DateToStr(GetFileDate(Directory)+14));
 
  If FileDate = Now Then ShowMessage('Der Ordner "'+Directory+'" ist 14 Tage alt')
  Else If FileDate > Now Then ShowMessage('Der Ordner "'+Directory+'" ist keine 14 Tage alt')  
  Else If FileDate < Now Then ShowMessage('Der Ordner "'+Directory+'" ist über 14 Tage alt');

End;



Ich brauchte diese Funktion auch einmal hab den Aufruf jetzt schnell etwas verständlicher umgeschrieben musst eben nur ein wenig ändern.

Ich hoffe ich konnte dir helfen

_________________
MfG Blackout
green-sound Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Di 22.04.03 07:02 
Hey Dankeschön!!

Aber bei deiner Funktion erhalte ich ne Fehlermeldung, mit der ich nichts anfangen kann. Vieleicht kannst du mir ja nochmal kurz weiterhelfen?

Die Meldung lautet:

Zitat:


Inkompatible Typen: 'Cardinal' und 'TSearchRec'


und kommt an folgender Stelle:

ausblenden Quelltext
1:
2:
3:
Finally 
    FindClose(SearchRec);  //genau hier!!
End;
Blackout
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 64



BeitragVerfasst: Di 22.04.03 12:54 
Ich habs bei mir jetzt nochmal getestet, läuft wunderbar :?:

Probier mal das hier:

ausblenden Quelltext
1:
2:
3:
  Finally 
    Sysutils.FindClose(SearchRec); 
  End;

_________________
MfG Blackout