AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein fmShareDenyWrite rückgängig machen?
Thema durchsuchen
Ansicht
Themen-Optionen

fmShareDenyWrite rückgängig machen?

Ein Thema von Baum21 · begonnen am 31. Jul 2013 · letzter Beitrag vom 1. Aug 2013
Antwort Antwort
Baum21

Registriert seit: 22. Jul 2013
24 Beiträge
 
#1

fmShareDenyWrite rückgängig machen?

  Alt 31. Jul 2013, 14:16
Hallo,
Ich habe ein kleines Problem,
Ich habe versucht beim Start von meinem Programm zu verhindern das jemand etwas in eine andere Datei schreibt, aus der ich ein paar Werte auslesen muss, und die nicht geändert werden darf:
Code:
TFileStream.Create('Dateipfad',fmShareDenyWrite);
Das hat auch alles ganz toll geglappt, nur muss ich am Ende des Programmes selbst die Datei überschreiben. Wie kann ich den "Schreibschutz" von der Datei wieder wegnehmen?
Habs schon mit
Code:
TFileStream.Create('Dateipfad',fmOpenWrite);
probiert, krieg dann aber nur folgende Fehlermeldung:
"Datei C:\... kann nicht geöffnet werden. Der Prozess kann nicht auf die Datei zugreifen, da diese bereits von einem anderen Prozess verwendet wird."
Hab auch schon versucht anstelle von fmShareDenyWrite fmShareExclusive zu benutzen, klappt genauso wenig..
Also was kann ich tun um selbst noch die datei beschreiben zu können?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: fmShareDenyWrite rückgängig machen?

  Alt 31. Jul 2013, 14:23
Diese Sperre ist nur so lange gültig, wie du die Hand auf der Datei hast.

Also nimm dein Pfötchen von der Datei (schicke den FileStream ins Nirwana)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Baum21

Registriert seit: 22. Jul 2013
24 Beiträge
 
#3

AW: fmShareDenyWrite rückgängig machen?

  Alt 31. Jul 2013, 14:36
Und wie mache ich das?
(Bin noch nen Anfänger in Delphi )
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.341 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: fmShareDenyWrite rückgängig machen?

  Alt 31. Jul 2013, 14:39
Es genügt den FileStream freizugeben.
Delphi-Quellcode:
var
  MyFile: TFileStream;
begin
  MyFile := TFileStream.Create('Dateipfad', fmShareDenyWrite);
  try
    MyFile. ...
  finally
    MyFile.Free; // danach ist die Datei wieder nutzbar
  end;
end;
fmShareDenyWrite reicht aber eigentlich kaum, normalerweise wird das (mit or) kombiniert mit fmOpenRead oder fmCreate um die Datei zum Lesen zu öffnen oder neu zu erstellen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Baum21

Registriert seit: 22. Jul 2013
24 Beiträge
 
#5

AW: fmShareDenyWrite rückgängig machen?

  Alt 31. Jul 2013, 19:01
Ok, so klappts,
vielen dank
Bei mir tut sich grad aber noch eine Frage auf:
Ich will das sich das Programm gleich beim öffnen versteckt.
Also hab ich unter FormCreate Form1.Hide; hingeklatscht.
Geschehen tut aber nichts. wenn ich das selbe unter einem Button mach funktionierts.
Warum wird das Form1.Hide bei FormCreate einfach ignoriert und was kann ich dagegen tun?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: fmShareDenyWrite rückgängig machen?

  Alt 31. Jul 2013, 20:23
Moin Baum,

mache bitte für die neue Frage einen neuen Thread auf, damit nichts durcheinander geht und andere später bei einer Suche auch das finden, was sie suchen.

Vielen Dank im Voraus.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Baum21

Registriert seit: 22. Jul 2013
24 Beiträge
 
#7

AW: fmShareDenyWrite rückgängig machen?

  Alt 31. Jul 2013, 20:37
Die Frage hat sich grade eh erledigt, ich machs jetzt mit Application.ShowMainForm := false.
aber das mit dem neuem thread mach ich das nächste Mal
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.341 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: fmShareDenyWrite rückgängig machen?

  Alt 1. Aug 2013, 04:24
Auch wenn das der falsche Thread ist, erkläre ich noch kurz warum das so ist:
OnCreate des Formulars wird ausgelöst, wenn das Objekt, das das Formular repräsentiert, erstellt wird. Danach wird das dann erst angezeigt, wobei auch OnShow ausgelöst wird. Während es gerade angezeigt wird (OnShow) lässt sich die Sichtbarkeit aber auch noch nicht verändern, da ginge also kein Hide. Erst danach ist das Fenster tatsächlich sichtbar und ließe sich mit Hide wieder verstecken.

Deshalb ist deine Lösung mit ShowMainForm genau richtig.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  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 16:21 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