AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

GetLastWriteTime ohne Exception?

Ein Thema von a.def · begonnen am 22. Mär 2017 · letzter Beitrag vom 24. Mär 2017
Antwort Antwort
a.def
(Gast)

n/a Beiträge
 
#1

GetLastWriteTime ohne Exception?

  Alt 22. Mär 2017, 22:04
Ist es irgendwie möglich TDictionary.GetLastWriteTime oder TFile.GetLastWriteTime zu benutzen OHNE dass bei korrupten Pfad oder fehlender Datei eine Exception ausgelöst wird?

Meine Anwendung hat einen Exception-Handler welcher jede Exception loggt und wenn hier 100 Exceptions zeitgleich geloggt werden das ist ein bisschen suboptimal.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: GetLastWriteTime ohne Exception?

  Alt 22. Mär 2017, 22:05
Wenn du die Exception mit einem eigenen lokalen Handler catchst, sollte sie doch nicht geloggt werden, oder?
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#3

AW: GetLastWriteTime ohne Exception?

  Alt 22. Mär 2017, 22:09
Meine Notlösung sieht jetzt so aus

Delphi-Quellcode:
function TForm8.GetLastWriteTimeEx_Dictionary(Path: string): TDateTime;
begin
 try
  Result := TDirectory.GetLastWriteTime(Path);
 except
  Result := 0;
 end;
end;

// xxx := GetLastWriteTimeEx_Dictionary('C:\irgendetwas');
// if xxx > 0 then
// weiter im Programm
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

AW: GetLastWriteTime ohne Exception?

  Alt 22. Mär 2017, 22:20
Wie wäre es mit function DirectoryExists(const Directory: string): Boolean; bzw. function FileExists(const FileName: string): Boolean;
Delphi-Quellcode:
function TForm8.GetLastWriteTimeEx_Dictionary(Path: string): TDateTime;
begin
 if DirectoryExists(Path) then begin
   try
    Result := TDirectory.GetLastWriteTime(Path);
   except
    Result := 0;
   end;
  end else Result := 0;
end;
Demnach http://docwiki.embarcadero.com/Libra...ils.TDirectory hat TDirectory 'ne Methode Exists.

class function Exists(const Path: string; FollowLink: Boolean = True): Boolean; Damit müsste man doch auch vorher abfragen können, ob es das zu prüfende gibt.
Delphi-Quellcode:
function TForm8.GetLastWriteTimeEx_Dictionary(Path: string): TDateTime;
begin
 if TDirectory.Exists(Path, False) then begin
   try
    Result := TDirectory.GetLastWriteTime(Path);
   except
    Result := 0;
   end;
  end else Result := 0;
end;
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#5

AW: GetLastWriteTime ohne Exception?

  Alt 22. Mär 2017, 22:27
Unnötige Dateizugriffe möchte ich nach Möglichkeit vermeiden aber ich werde es definitiv testen!

Ok Test nach nur einer Minute erledigt und es hat keine Performance-einbußen mit sich gebracht wie ich vorher hatte.
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#6

AW: GetLastWriteTime ohne Exception?

  Alt 22. Mär 2017, 23:52
Mein Endergebnis sieht jetzt übrigens so aus. Ich habe auf JclFileUtils gewechselt, da die ein wenig schneller sind

Delphi-Quellcode:
function FileTimeToDateTime(FileTime: TFileTime): TDateTime;
var
 ModifiedTime: TFileTime;
 SystemTime: TSystemTime;
begin
 Result := 0;
 if (FileTime.dwLowDateTime = 0) and (FileTime.dwHighDateTime = 0) then
  Exit;
 try
  FileTimeToLocalFileTime(FileTime, ModifiedTime);
  FileTimeToSystemTime(ModifiedTime, SystemTime);
  Result := SystemTimeToDateTime(SystemTime);
 except
  Result := Now; // Something to return in case of error
 end;
end;

function TForm8.getPathLastWriteTime(const aPathName: string): TDateTime;
begin
 try
  Result := FileTimeToDateTime(JclFileUtils.GetFileLastWrite(aPathName)); // TDirectory.GetLastWriteTime(aPathName);
 except
  Result := 0;
 end;
end;

function TForm8.getFileLastWriteTime(const aFileName: string): TDateTime;
begin
 Result := functions.getPathLastWriteTime(aFileName);
end;
  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 01:31 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