AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FileExists/FileDate - Auslesen über Netzwerk langsam
Thema durchsuchen
Ansicht
Themen-Optionen

FileExists/FileDate - Auslesen über Netzwerk langsam

Ein Thema von dGeek · begonnen am 10. Sep 2016 · letzter Beitrag vom 12. Sep 2016
 
dGeek
(Gast)

n/a Beiträge
 
#13

AW: FileExists/FileDate - Auslesen über Netzwerk langsam

  Alt 11. Sep 2016, 16:06
Guck mal mein Beispiel. Nicht das Sammeln der Daten ist das Problem

Kleines Beispiel. Es wurde alles weggelassen bis auf das, wo es hapert.
Das hier braucht rund 23 Sekunden (D:\ = im PC, Y:\ = Festplatte am Router per USB 100 MBit): (keine der Dateien existiert)
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;

 FileTimeToLocalFileTime(FileTime, ModifiedTime);
 FileTimeToSystemTime(ModifiedTime, SystemTime);
 Result := SystemTimeToDateTime(SystemTime);
end;

function getFileLastModified(const aFileName: string): TDateTime;
begin
 Result := FileTimeToDateTime(JclFileUtils.GetFileLastWrite(aFileName));
end;

function IsFileANewerFileB(aFileA, aFileB: string): Boolean;
var
 bRes: Boolean;
begin
 if (not FileExists(aFileB)) or (not FileExists(aFileA)) then
  bRes := True
 else
  bRes := getFileLastModified(aFileA) > getFileLastModified(aFileB);

 Result := bRes;
end;

/////////////////////////////////////////////////////////////////////////////////
procedure TForm1.Button1Click(Sender: TObject);
var
 freq: Int64;
 startTime: Int64;
 endTime: Int64;
 i: Integer;
 a, b: String;
begin
 QueryPerformanceFrequency(freq);
 QueryPerformanceCounter(startTime);

 a := 'D:\Datei1.txt';
 b := 'Y:\Datei2.txt';

 for i := 0 to 9999 do
  begin
   if IsFileANewerFileB(a, b) then
    begin
    end;
  end;

 QueryPerformanceCounter(endTime);

 ShowMessage('Die Routine benötigte etwa ' + IntToStr((endTime - startTime) * 1000 div freq) + 'ms');
end;
/////////////////////////////////////////////////////////////////////////////////
Wenn Y:\ durch D:\ ausgetauscht wird, dauert das Ganze 50ms.
  Mit Zitat antworten Zitat
 


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 12:14 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