Entwickler-Ecke
Dateizugriff - Erstellungsdatum setzen
Stilfser - Di 23.09.03 18:30
Titel: Erstellungsdatum setzen
Hi da draußen,
Gibt es eine Möglichkeit, einer Datei eine Versionsnummer oder etwas ähnliches zuzuordnen?
Eine erste Idee wäre, mit FileSetDate eine Art Versionsnummer zu kreieren, aber leider setzt FileSetDate nur das "Zuletzt geändert"-Datum. Wenn aber der Benutzer diese Dateien verändern kann, sind sie nicht mehr einer Version zuzuordnen.
Man könnte statdessen vielleicht das Erstellungsdatum einer Datei setzen, nur wie geht das?
MSCH - Di 23.09.03 19:06
es gibt imho leider kein Fileformat welches Versionen unterstützt ohne eine Anwendung dazu zu benutzen. NTFS kann zwar Änderungs- Erstellungs- und Zugriffsdatum setzen, allerdings readOnly. Da wirst du dir wohl was einfallen lassen müssen.
grez
msch
patrick - Mi 24.09.03 09:31
dir wird wohl nicht anderes übrig bleiben als ein eigenes format zu konstrueieren und nen header mit versionsangabe für die datei zu schreiben.
ne andrere möglichkeit wäre vielleicht die version direkt in dn dateinamen zu intgrieren:
Quelltext
1:
| testdatei 1-24-23-2.txt |
mb - Mi 24.09.03 09:47
AFAIK kann man aber doch das Erstellungsdatum einer Datei ändern; warum sollte es auch nicht gehen.
Zum einen kann man unter Windows die Funktion deaktivieren, dass der letzte Zugriff überhaupt gespeichert wird. Dann änderst Du mit den normalen Dateifunktionen auch automatisch das Erstellungsdatum. Aber das hilft Dir ja wenig, weil dann bei einer Änderung auf die "Versionsnummer" wieder hinüber wäre.
Zum einen kannst Du das Dateidatum (DOS-Datum) über die Funktion FileAge besorgen
Quelltext
1:
| DOSDate := FileAge(FileName); |
zum anderen via FindFirst, FindNext über TSearhRec:
Quelltext
1: 2: 3:
| var SR: TSearchRec; ... FileDate := FileDateToDateTime(SR.Time); |
Ob ich noch besseren/ausführlicheren Code bei mir finde... mal sehen.
mb - Mi 24.09.03 09:53
Also, es sollte definitiv möglich sein, das Erstellungsdatum zu ändern. Ich finde gerade keinen eigenen Code dazu, aber erinnere mich dumpf, wie es ging:
1. DOS-Datum als TFileTime holen
2. Datei mit Handle := FileOpen(...) öffnen
3. Datum mit SetFileTime(...) anpassen/setzen (Erstellungsdatum!)
4. Datei mit FileClose(Handle) schließen
So in etwa sollte es funktionieren.
Ansonsten: Eigenes Dateiformat entwerfen; oder Datei in Wrapper-Format einpacken.... exe-, dll-, ... und andere files unterstützen ja auch bereits Versionen. Auf diese Infos kann man natürlich auch zugreifen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!