AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verzeichnis überwachen & Dateiänderungsdatum prüfen
Thema durchsuchen
Ansicht
Themen-Optionen

Verzeichnis überwachen & Dateiänderungsdatum prüfen

Ein Thema von Moombas · begonnen am 12. Apr 2018 · letzter Beitrag vom 1. Feb 2021
Antwort Antwort
günni0
(Gast)

n/a Beiträge
 
#1

AW: Verzeichnis überwachen & Dateiänderungsdatum prüfen

  Alt 13. Apr 2018, 10:13
Bei der von mir genannten Unit kann man auch als Abfrageoptionen woLastWrite, woLastAccess, woCreation auswählen.
Dann wird nur noch auf geänderte Daten geprüft.
(geht mit Wosis Unit selbstverständlich auch)
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Verzeichnis überwachen & Dateiänderungsdatum prüfen

  Alt 13. Apr 2018, 10:46
Ich hab es durchaus mit deiner Abfrage mit waModified probiert aber hat bei Änderungen nicht reagiert bzw. soll sich ja explizit auf die vorher erstellte datei beziehen. Daher bin ich dafür wieder auf die Timerlösung umgestiegen. Wobei ich dort aktuell das Problem habe, das ich mit der Zeitausgabe nicht hinkomme (falsche Zeit, ich denke immer die aktuelle Systemzeit). Die Funktion habe ich allerdings nur kopiert und mich irritiert das Systemtime bei Encodedate.

Code:

function TTools.GetCreationTimeOfFile(const AFileName: String): TDateTime;
var
  SR: TSearchRec;
  SystemTime: TSystemTime;
  NewWriteTime: TFileTime;
begin
  Result:=0;
  if FindFirst(AFileName, faAnyFile, SR)=0 then
  try
    IF (FileTimeToLocalFiletime(SR.FindData.ftLastWriteTime, NewWriteTime) and
           FileTimeToSystemTime(NewWriteTime, SystemTime)) Then
    Result := Encodedate(SystemTime.wYear,
                         SystemTime.wMonth,
                         SystemTime.wDay) +
              Encodetime(SystemTime.wHour,
                         SystemTime.wMinute,
                         SystemTime.wSecond,
                         SystemTime.wMilliseconds);
  finally
    FindClose(SR)
  end;
end;

Geändert von Moombas (13. Apr 2018 um 10:51 Uhr)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#3

AW: Verzeichnis überwachen & Dateiänderungsdatum prüfen

  Alt 13. Apr 2018, 10:52
Zitat:
Ich hab es durchaus mit deiner Abfrage mit waModified probiert aber hat bei Änderungen nicht reagiert bzw. soll sich ja explizit auf die vorher erstellte datei beziehen.
waAdded
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Verzeichnis überwachen & Dateiänderungsdatum prüfen

  Alt 13. Apr 2018, 10:57
Warum waAdded wenn ich schauen möchte ob eine Datei geändert/bearbeitet wurde? bei Added wäre ich bei erstellt oder hineinkopiert (das überwachen davon funktioniert ja schon dank deiner Hilfe). Oder verstehe ich da etwas falsch.

Bin bei Step 2: Schauen ob die erstellte Datei sich in den letzten 30sekunden gändert hat/ bearbeitet wurde.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#5

AW: Verzeichnis überwachen & Dateiänderungsdatum prüfen

  Alt 13. Apr 2018, 10:58
Dann habe ich deinen Satz falsch verstanden.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Verzeichnis überwachen & Dateiänderungsdatum prüfen

  Alt 13. Apr 2018, 11:00
Macht ja nix Dennoch habe ich das oben genannte Problem mit der Zeit/Systemzeit. Auch kann ich "NewWriteTime" nicht umwandeln, bin da noch auf einer Lösungssuche.

Edit: Habe die Funktion nun geändert:

Code:
function TTools.GetFileChange(const AFileName: String): TDateTime;
var
  SR: TSearchRec;
  SystemTime: TSystemTime;
  NewWriteTime: TFileTime;
begin
  Result:=0;
  if FindFirst(AFileName, faAnyFile, SR)=0 then
  try
    IF (FileTimeToLocalFiletime(SR.FindData.ftLastWriteTime, NewWriteTime) and
           FileTimeToSystemTime(NewWriteTime, SystemTime)) Then
    Result := filetimetodatetime(newwritetime);
  finally
    FindClose(SR);
  end;
end;

Function TTools.FileTimeToDateTime(Const TimeIn : _FILETIME) : tDateTime;
Var
     DosTime   : Cardinal;
     Date              : Word;
     Time              : Word;
Begin
     FileTimeToDosDateTime(@TimeIn, Date, Time);
     DosTime := Cardinal(Date) Shl 16 + Time;
     Result := FileDateToDateTime(DosTime);
End;
Jetzt bekomme ich allerdings das "Erstellungsdatum/Zeit" der Datei.

Edit: Lösung gefunden Manchmal muss man seine eigene Logik in Frage stellen XD

Geändert von Moombas (13. Apr 2018 um 12:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Verzeichnis überwachen & Dateiänderungsdatum prüfen

  Alt 13. Apr 2018, 12:47
So könntest Du auch die Information abfragen:

Delphi-Quellcode:
function GetFileLastWriteTime(Path: string; var LastWrite : TDateTime): Boolean;
var
  hFile: THandle;
  rStructur: TWin32FindData;
  rFileTime: TFileTime;
  dwLastWrite: Cardinal;
begin
  Result := False;
  hFile := Winapi.Windows.FindFirstFile(pchar(Path), rStructur);
  if hFile <> INVALID_HANDLE_VALUE
  then begin
    Winapi.Windows.FindClose(hFile);
    { FILETIME in lokales FILETIME-Format konvertieren }
    FileTimeToLocalFileTime(rStructur.ftLastWriteTime, rFileTime);
    { lokales FILETIME-Format ins DOS-Format konvertieren }
    FileTimeToDosDateTime(rFileTime, LongRec(dwLastWrite).Hi, LongRec(dwLastWrite).Lo);
    { DOS-Format in ein Delphi-Format konvertieren }
    LastWrite := FileDateToDateTime(dwLastWrite);
    Result := True;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 DT: TDateTime;
begin
 if GetFileLastWriteTime(ParamStr(0), DT) then Label1.Caption := DateTimeToStr(DT);
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 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