Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Älteste Datei löschen - Wie ? (https://www.delphipraxis.net/92076-aelteste-datei-loeschen-wie.html)

matashen 14. Mai 2007 10:25


Älteste Datei löschen - Wie ?
 
Hallo zusammen,

ich muß derzeit ein spezielles Backupprogramm schreiben.
Es wird dabei die Information was gespeichert wurde (Report) in eine Datei mit dem Namen des Datums gelegt.
Anschließend erstell ich mit Forcedirectory ein Verzeichnis ebenfalls mit Namen des Datums der Sicherung. In dieses Verzeichnis schaufel ich dann die Daten, die zu sichern sind.
Jetzt das Problem:
Nach einer bestimmten Anzahl Sicherungen soll die älteste Sicherung automatisch gelöscht werden.
Ich hatte dazu folgenden Ansatz, kann das aber momentan nicht ausprobieren. Daher die Bitte mal ansehen und vieleicht bessere Idee mitteilen. hab sowas noch nicht gemacht und möchte nicht aus versehen das falsche Verzeichnis ins Nirvana kicken.

Delphi-Quellcode:
        altdatei:=date;
        aktdatei:=altdatei;
        for i:=0 to filelistbox1.items.count-1 do begin;
            aktdatei:=getdateidatum(filelistbox1.items[i]);
            if aktdatei<altdatei then begin;
                                      altdatei:=aktdatei;
                                      altdateiindex:=i;
                                      end;
            end;
         a10:=filelistbox1.items[altdateiindex];
         label16.caption:=a10;
         if altdatei<>date then begin;
            deletefile(a1+'\'+a10);
            deletefile(a1+'\'+a10+'.dat');
         end;
Gruß Matthias

mace 14. Mai 2007 11:00

Re: Älteste Datei löschen - Wie ?
 
1. ein sehr interessantes Einrücksystem weist du da auf. :)
Soweit ich informiert bin ist es so einiges geläufiger:

Delphi-Quellcode:
if __ then
  begin
    ...
  end
else
  begin
    ...
  end;
2. Würde ich dir DRINGENST abraten an den Backups dein Programm zu testen!
Kopier dir doch den Backupordner komplett weg und teste dann an diesem kopiertem Ordner dein Programm und erst wenn du sicher bist, dass es nur die richtigen Ordner löscht, setzt du es an der Stelle ein, wo die wichtigen Backups liegen.

In dem Code fehlt übrigens ein end;, oder ich erkenn es nicht durch seltsame Einrückungen. ;)

Die Überprüfung
Delphi-Quellcode:
if altdatei<>date then begin;
ist an dieser Stelle nicht sinnvoll. Du willst ja nur löschen, wenn die Datei ein bestimmtes Backup"alter" aufweist und nicht immer wenn es älter als das aktuellste ist! :)
"a10" ist ja dein Ordner + dein Dateiname. Du löschst da erst den Ordner und dann die Datei. Wenn es so rum funktioniert, kannst du das Dateilöschen weglassen. Wenn nicht musst du die 2 Zeilen umdrehn. ;)

PS:
Wenn du die Datei innerhalb des gleichnamigen Ordners löschen willst, musst du übrigens den Ordner ergänzen:


if altdatei<>date then
begin

deletefile(a1+'\'+a10);
deletefile(a1+'\'+a10+'\'+a10+'.dat');
end;

matashen 14. Mai 2007 11:15

Re: Älteste Datei löschen - Wie ?
 
Hallo,

ja mein Einrücksystem ist einzigartig :-D

Die Prüfung
Delphi-Quellcode:
if altdatei<>date then begin;
muß ich ja irgendo machen, zumindest hätte ich das als Sicherheit eingebaut um aus Versehen nicht die aktuelle zu löschen.

Hiermit
Delphi-Quellcode:
deletefile(a1+'\'+a10);
lösch ich den Ordner mit Namen a10
und hier
Delphi-Quellcode:
deletefile(a1+'\'+a10+'.dat');
den Report der dazu im Verzeichnis ausserhalb des Backups liegt
Das Verzeichnis sieht ungefähr so aus
Backup\Station\<Datum_Sicherung>.dat
Backup\Station\<Datum_Sicherung>\gesicherte Daten

mir ging es aber um die Sortierung, ob diese korrekt ist und ob jemand eine Verbesserung weiß.

Gruß Matthias

QuickAndDirty 14. Mai 2007 11:17

Re: Älteste Datei löschen - Wie ?
 
Das For endet in Zeile 9...
habs nach langem suchen finden können.

mace 14. Mai 2007 11:27

Re: Älteste Datei löschen - Wie ?
 
Zitat:

Zitat von QuickAndDirty
Das For endet in Zeile 9...
habs nach langem suchen finden können.

Das is gut, danke!
Ich hatte es nicht gefunden. ;)

Ja, dann versteh ich auch, warum dus mit der altdatei überprüfst, aber es müsste schon geschickter gehn.
Also mit ner FileListbox hab ich noch nicht gearbeitet. Aber sind oder kannst du da die Datein nicht drin sortieren?
Wenn ja, dann nimm doch den ersten Eintrag der FListbox (mit Index[0]) und speicher dir den Wert dieses Ordners. Danach kannst du Ordner und Datei nach dem Wert der Variable löschen.

matashen 14. Mai 2007 13:29

Re: Älteste Datei löschen - Wie ?
 
Wenn ich in der Filelistbox sortiere, dann macht der mir das nach Namen, ich brauche aber eine sortierung nach Datum, gibt es ne möglichkeit das umzustellen oder eine andere Art der Handhabung ?

Freu mich auf Antowrt :bounce2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz