AGB  ·  Datenschutz  ·  Impressum  







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

Datei exklusiv öffnen

Ein Thema von Avax2k · begonnen am 19. Jan 2006 · letzter Beitrag vom 22. Jan 2006
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#1

Datei exklusiv öffnen

  Alt 19. Jan 2006, 19:13
Hi hab folgenden Code

Delphi-Quellcode:
const FILE_NAME = 'C:\Test.txt';
procedure TForm1.Button1Click(Sender: TObject);
begin
TFileStream.Create(File_Name, fmshareexclusive);
Shellexecute(0,'OPEN',Pchar(File_Name),nil,0,0);
end;
so ich bekomme nun die meldung, dass ich die Datei nicht öffnen kann weil sie geschützt ist..das wollte ich auch erreichen..aber erst wollte ich sie gern offen haben und erst dann schützen..wie stelle ich das denn an..oder geht das nicht mehr ?

Danke schonmal für die Hilfe
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 19:26
Du hast mit Deinem Code zwei unabhängige Zugriffe gebaut: zuerst den exclusiven Zugriff per Filestream (damit gehört die Datei exclusiv Deinem TFilestream) und dann einen Zugriff auf Betriebssystemebene (der wird dann natürlich geblockt).
Gib' zuerst Deinem Filestream einen Namen:
Delphi-Quellcode:
Fs := TFilestream.create(...)
FS.Read(var Buffer; Count: Longint): Longint;//das schaust Du in der Hilfe nach
Erst wenn Du den FileStream freigibts, kann wieder anderweitig auf die Datei zugegriffen werden.

Grüße, Messie
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 19:27
Hi,

und außerdem musst du etwas mehr auf die Syntax achten:

Delphi-Quellcode:
var
  fs: TFileStream;
begin
  fs := TFileStream.Create(FileName, fmOpenRead, fmShareExclusive);
  // ...
  fs.Free;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 19:33
okay das habe ich gemeint, wenn ich den Stream wieder freigebe dann kann man wieder beliebig auf die Datei zugreifen..das ist aber gar nicht gut .
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 20:08
Das musst du wohl etwas genauer erklären. Du willst den share mode für eine geöffnete Datei nachträglich ändern und die Zugriffsperre soll erhalten bleiben, auch wenn dein Programm seinen Zugriff beendet? Das erste erreichst du über ReopenFile(), das zweite ist etwas schwieriger. Aber vielleicht habe ich dich ja auch völlig falsch verstanden.

marabu
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 20:12
ich möchte, dass solange mein Programm läuft und eine Datei benutzt diese eben gesperrt ist, wenn mein Programm beendet wird soll der Zugriff aufgehoben werden.
Somit wäre es, wie du sagst die Variante mit ReOpenFile()
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 20:17
Nein, dann ist mein erster Code der richtige. Allerdings musst du den Zeitpunkt für das Create und das Free des FileStream geschickt legen - vielleicht Create in den event handler für OnCreate deiner MainForm und das Free in den event handler für OnDestroy.

marabu
  Mit Zitat antworten Zitat
Avax2k

Registriert seit: 6. Okt 2005
186 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 20:22
ja nur wenn ich eben die Datei als Stream habe dann kann ich sie nicht öffnen und wenn ich free mache dann kann ich sie öffnen nur ist sie nicht mehr geschützt.

OnCreate mache ich sie geschützt..aber kann mit ihr dann gar nichts anfangen würde sie gern mit shellexcute ausführen..aber geht ja nicht..und bei free geht es klar aber dann ist sie nicht mehr geschützt die Datei

will somit eine Datei erst Öffnen und dann nachträglich den Zugriff sperren, sprich so lange mein Programm die Datei benutzt soll der Zugriff nicht mehr funktionieren.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 20:47
Deine Anforderung wird vielleicht besser über Berechtigungen (Benutzerrechte) abgedeckt. Vielleicht gibt es noch eine andere Lösung. Um was für einen Dateityp handelt es sich denn? Und warum das Ganze?

marabu
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Datei exklusiv öffnen

  Alt 19. Jan 2006, 20:51
Habe ich das richtig verstanden:

Du möchtest die Datei von Beginn bis Ende Deiner Programmlaufzeit für andere Prozesse sperren, sie aber während Deiner Programmausführung per Shellexecute starten können?

Dann kannst Du direkt vor Shellexecute freeandnil(FS) benutzen, und danach wieder FS.create(...). Damit bleibt für andere Prozesse nur ein Zeitfenster von einigen hundert Prozessorschritten um sich die Datei zu greifen.
Such mal in der Hilfe nach oder suche nach Beispielen, wie Shellexecute auf die Ausführung der Datei wartet damit Du keine Zugriffsverletzung beim erneuten create bekommst. Evtl. noch ein application.processmessages dazwischenschalten, wenn Du nicht in einem Thread arbeitest.

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 17:01 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