Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei ist in Benutzung (https://www.delphipraxis.net/47285-datei-ist-benutzung.html)

MCXSC 8. Jun 2005 21:31


Datei ist in Benutzung
 
Hallo,

wie kann ich eine Datei unter "Schreibschutz" stellen? Sprich: Dass sie solange nicht gelöscht werden kann, bis sie wieder vom Programm freigegeben wurde? Ist z.B. bei Windows-Systemdateien so. Wenn man die löschen möchte erscheint "Datei wird gerade verwendet"...

Kann mir einer helfen?

Danke im vorraus, MCXSC

Ultimator 8. Jun 2005 21:40

Re: Datei ist in Benutzung
 
Per MSDN-Library durchsuchenSetFileAttributes lässt sich das gut machen (Parameter FILE_ATTRIBUTE_READONLY würde ich vorschlagen :))

MCXSC 8. Jun 2005 21:45

Re: Datei ist in Benutzung
 
Und wie funktioniert das? Ist es automatisch in D6? Oder muss ich eine Komponente nachinstallieren? Und unter welchen WinSystemen funzt das?

Ultimator 8. Jun 2005 21:48

Re: Datei ist in Benutzung
 
Zitat:

Requirements
Client: Requires Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.
Funzt also ab Win 95.
Das geht auch mit D6, ja ;).
Musst die Funktion einfach wie jede andere auch verwenden ;)

Delphi-Quellcode:
procedure TFormDings.ButtonBlaClick(Sender: TObject);
begin
  SetFileAttributes(blabla);
end;

VirusXP 8. Jun 2005 21:53

Re: Datei ist in Benutzung
 
Du kannst aber auch ein Prog schreiben, des mit nem TFileStream auf die Datei zugreift und nicht durch Free freigibt.

z.B.:
Delphi-Quellcode:
 
         Var datei: TFileStream;    //Globale Variable

         procedure TForm1.Create(...)
         Begin
          TFileStream.Create(Dateiadresse,fmOpenRead); //Hier wird die Datei am Anfang des Progs aufgerufen...
         end;

         procedure TForm1.Destroy(...)
         Begin
          TFileStream.Free; //...und dann mit dem Schließen wieder freigegeben
         end;
Des dürfte die Datei solange kopiergeschützt halten wie des Prog läuft, schätz ich mal.

Ultimator 8. Jun 2005 21:59

Re: Datei ist in Benutzung
 
Zitat:

Zitat von VirusXP
Du kannst aber auch ein Prog schreiben, des mit nem TFileStream auf die Datei zugreift und nicht durch Free freigibt.

z.B.:
Delphi-Quellcode:
 
         Var datei: TFileStream;    //Globale Variable

         procedure TForm1.Create(...)
         Begin
          TFileStream.Create(Dateiadresse,fmOpenRead); //Hier wird die Datei am Anfang des Progs aufgerufen...
         end;

         procedure TForm1.Destroy(...)
         Begin
          TFileStream.Free; //...und dann mit dem Schließen wieder freigegeben
         end;
Des dürfte die Datei solange kopiergeschützt halten wie des Prog läuft, schätz ich mal.

Und wenn er es mal über den Taskmanager abschießen muss, hat er ein Problem, weil TFileStream.Free nicht aufgerufen wird.
Bei "meiner" Methode kann der User zur Not in so nem Fall immernoch selber hergehen und in den Eigenschaften der Datei den Schreibschutz entfernen.

//edit: Mist, scheint doch löschen zu gehen, wenn man das Programm dann abschießt ;)

VirusXP 8. Jun 2005 22:04

Re: Datei ist in Benutzung
 
War nur son spontaner Einfall nach dem Motto wieso kompliziert wenns auch einfach geht!


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