Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wann sollte Programm mehrfachen Dateizugriff bemerken (https://www.delphipraxis.net/184803-wann-sollte-programm-mehrfachen-dateizugriff-bemerken.html)

Jumpy 22. Apr 2015 10:00

Wann sollte Programm mehrfachen Dateizugriff bemerken
 
Hallo,

bei diversen Texteditoren ist es ja so, dass sie es bei einer Datei, die ich gerade darin geöffnet habe, bemerken, dass diese anderweitig aktualisiert worden ist und man bekommt eine Meldung, das die Datei evtl. nicht mehr aktuell ist und ob die aktuelle Version geladen werden soll.

Manchmal hab ich sogar das "Gefühl", z.B. bei HTML-Dateien, das diese Meldung auch kommt obwohl die Datei nicht geändert wurde, sondern z.B. auch nur verwendet/aufgerufen wurde, z.B. vom Browser.

Wie denkt ihr merken diese Programme das und vor allem wann? Läuft da ein Timer, der alle X Sekunden checkt, ob die Datei mit der auf der Festplatte übereinstimmt? Oder wird erst, wenn der Editor den Fokus bekommt geprüft, ob die aktuell sichtbare Datei sich von der Version auf der Festplatte unterscheidet.
Und wie merkt man, das eine Datei nur benutzt wurde, falls es das ist was da passiert?

mkinzler 22. Apr 2015 10:03

AW: Wann sollte Programm mehrfachen Dateizugriff bemerken
 
Oder man lässt sich vom Betreibssystem/Dateisystem über Änderungen informieren.

p80286 22. Apr 2015 10:23

AW: Wann sollte Programm mehrfachen Dateizugriff bemerken
 
Vielleicht hilft Dir das
ReadDirectoryChangesW function
weiter?

Gruß
K-H

Dalai 22. Apr 2015 10:53

AW: Wann sollte Programm mehrfachen Dateizugriff bemerken
 
Ich hab sowas mal in einem meiner Programme benutzt und IIRC hab ich dabei einfach auf den Zeitstempel der Datei zurückgegriffen. Der wird gespeichert beim Starten des Programms und im OnActivate wird er erneut ermittelt und mit dem gespeicherten verglichen. Bei Unterschied wird der Nutzer gefragt und unabhängig von dessen Antwort wird der Zeitstempel übernommen (für evtl. weitere Änderungen).

[ADD]
So in dem Schema:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  INI_Date:= FileDateToDateTime(FileAge(IniFileName));
end;

procedure TMainForm.OnActivateMainForm(Sender: TObject);
var temp_date: TDateTime;
begin
  temp_date:= FileDateToDateTime(FileAge(IniFileName));
  if INI_Date <> temp_date then
    if MessageBox(...) then ... // Datei neu einlesen
  INI_Date:= temp_date;
end;
[/ADD]

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 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