Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Herausfinden wann ene Dtaei zuletzt geöffnet wurde (https://www.delphipraxis.net/6593-herausfinden-wann-ene-dtaei-zuletzt-geoeffnet-wurde.html)

phlux 16. Jul 2003 11:33


Herausfinden wann ene Dtaei zuletzt geöffnet wurde
 
Hi!
Ich hab verschiedene Ordner wo ich irgendwelche Files aufbewahre, jedoch ist meine Ordnung nach dem Motto aus den Augen aus dem sind, deshalb möchte ich ein dDelphiprogramm schrieben das mir sagt wann ich eine Datei zuletzt geöffnet habe, sprich benutzt, falls diese dann länger als ein angegebener zeitraum nicht mehr genutzt wurde soll eine gegebene Aktion stattfinden. Meine Frage nun, wie finde ich heraus wann eine Datei zu letzte geöffnet wurde???


mfg phlux

Alexander 16. Jul 2003 11:38

Re: Herausfinden wann ene Dtaei zuletzt geöffnet wurde
 
meinst du das Änderungsdatum? Wenn du das Änderungsdatum meinst, dann kuck dir das hier mal an

sakura 16. Jul 2003 11:41

Re: Herausfinden wann ene Dtaei zuletzt geöffnet wurde
 
Dazu benötigst Du die Funktion GetFileAttributesEx. Die liefert Dir die letzte Zugriffszeit zurück. (:arrow: MSDN) Verfügbar ab Windows 98 / Windows NT 4.

...:cat:...

Alexander 16. Jul 2003 11:42

Re: Herausfinden wann ene Dtaei zuletzt geöffnet wurde
 
Ich habe gerade in meiner privaten Code-Library ;-) diesen Code gefunden:
Delphi-Quellcode:
function GetFileTimes(const FileName: string; var Created: TDateTime;
var Accessed: TDateTime; var Modified: TDateTime): Boolean;
var
  h: THandle;
  Info1, Info2, Info3: TFileTime;
  SysTimeStruct: SYSTEMTIME;
  TimeZoneInfo: TTimeZoneInformation;
  Bias: Double;
begin
  Result := False;
  Bias  := 0;
  h     := FileOpen(FileName, fmOpenRead or fmShareDenyNone);
  if h > 0 then
  begin
    try
      if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then
        Bias := TimeZoneInfo.Bias / 1440; // 60x24 
      GetFileTime(h, @Info1, @Info2, @Info3);
      if FileTimeToSystemTime(Info1, SysTimeStruct) then
        Created := SystemTimeToDateTime(SysTimeStruct) - Bias;
      if FileTimeToSystemTime(Info2, SysTimeStruct) then
        Accessed := SystemTimeToDateTime(SysTimeStruct) - Bias;
      if FileTimeToSystemTime(Info3, SysTimeStruct) then
        Modified := SystemTimeToDateTime(SysTimeStruct) - Bias;
      Result := True;
    finally
      FileClose(h);
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  Date1, Date2, Date3: TDateTime;
begin
  if GetFileTimes(Edit1.Text, Date1, Date2, Date3) then
  begin
    ShowMessage('Created: ' + DateTimeToStr(Date1));
    ShowMessage('Last Accessed: ' + DateTimeToStr(Date2));
    ShowMessage('Last Modified: ' + DateTimeToStr(Date3));
  end;
end;
Der sollte nun auch das letzte Zugriffsdatum liefern.
Wenn ich mich nicht irre, kommt der Code von Swissdelphicenter

Christian Seehase 16. Jul 2003 11:42

Re: Herausfinden wann ene Dtaei zuletzt geöffnet wurde
 
Moin Phlux,

wenn Du Dir die Dateien mit FindFirst... auswählst, hast Du im TSearchRec.FindData Zugriff auf eine TWin32FindData Struktur. Diese entspricht der WIN32_FILE_ATTRIBUTE_DATA der API und enthält unter anderem den Eintrag LastAccessTime.

Wichtig ist, dass jeder andere Zugriff auf die Datei, und sei es ein anklicken im Explorer um sich die Eigenschaften anzusehen, oder ein Auswählen im OpenDialog, die LastAccessTime ändert.
Geöffnet bekommst Du also nicht damit heraus.

phlux 16. Jul 2003 21:09

Re: Herausfinden wann ene Dtaei zuletzt geöffnet wurde
 
N'abend :hi:
Ich denke das Alexanders Vorschlag die Lösung ist, werds mal ausprobieren werd mich mal nochmal melden falls es nicht klappt.
Thx für die vielen Antworten :thumb:

mfg phlux :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:00 Uhr.

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