AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Simultaner Zugriff auf Datei

Ein Thema von kkoe · begonnen am 30. Mai 2014 · letzter Beitrag vom 3. Jun 2014
Antwort Antwort
Seite 2 von 2     12
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#11

AW: Simultaner Zugriff auf Datei

  Alt 2. Jun 2014, 19:56
Eventuell kannst Du die Datei auch kopieren und nach dem Lesen löscht du die Datei wieder.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#12

AW: Simultaner Zugriff auf Datei

  Alt 3. Jun 2014, 08:16
Irgendwie verstehe ich die Diskussion nicht. Selbstverständlich kann man eine Datei zum Lesen öffnen, auch wenn sie gerade geschrieben wird. Es können sogar mehrere Prozesse die Datei zum Schreiben öffnen. Dazu muss man TFilestreams mit den korrekten Parametern erzeugen und schon geht das wunderbar.
Zusätzlich sollte man sich einen Transaktions-Mechanismus ausdenken, der sicher stellt, dass die Daten konsistent sind. Aber das war ja hier nicht gefragt. Natürlich darf die Datei von keinem Prozess mit Exklusiv-Rechten geöffnet sein.

Anbei habe ich eine kleine Demo erzeugt. Dieses Programm kann mehrmals gestartet werden und alle können fröhlich auf der Datei schreiben und lesen.
Hinweis: Bei Delphis älter als Delphi 2010 (vielleicht auch 2009?) hat fmCreate noch keinen Share-Parameter erlaubt. Deshalb gibt es im Demo einen etwas wirren Workaround dafür. D.h. Wenn die Datei noch nicht existiert wird die Datei erzeugt und danach nochmal geschlossen. Ab Delphi 2010 kann man sich das sparen.
Angehängte Dateien
Dateityp: zip Demo.zip (223,1 KB, 26x aufgerufen)

Geändert von samso ( 3. Jun 2014 um 20:09 Uhr) Grund: typo
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#13

AW: Simultaner Zugriff auf Datei

  Alt 3. Jun 2014, 08:32
Wenn ich eine Datei lesen will, die von einem anderen Prozess blockiert wird, kopiere ich mir die Datei und öffne die Kopie. Das klappt fast immer (außer bei SQL-Server).
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.093 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Simultaner Zugriff auf Datei

  Alt 3. Jun 2014, 09:00
Selbstverständlich kann man eine Datei zum Lesen öffnen, auch wenn sie gerade geschrieben wird. Es können sogar mehrere Prozesse die Datei zum Schreiben öffnen. [...] Natürlich darf die Datei von keinem Prozess mit Exklusiv-Rechten geöffnet sein. Anbei habe ich eine kleine Demo erzeugt.
Du hast vollkommen recht, keine Ahnung warum ich gestern so einen Humbug erzählt habe

Die Dokumentation zu TFileStream.Create(..) fand ich (vor allem in der deutschen Fassung) auch nicht grade einfach verständlich. Aber wahrscheinlich sind's die Viren in meinem Kopf


Gutes Beispiel.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#15

AW: Simultaner Zugriff auf Datei

  Alt 3. Jun 2014, 09:08
Aha, dieser Nebensatz scheint entscheidend zu sein.
Und durch das Weglassen der Exklusivrechte können doch wieder andere Programme auf die Datei zugreifen, während dieses Programm am bearbeiten ist, oder? (Das wollte ich ja verhindern)
Der TE will vermutlich durch das exklusive öffnen der Datei den Transaktions-Mechanismus realisieren? Aus den anderen Nebenbemerkungen schließe ich, das die Datei in relativ kurzen Zeitabständen aktualisiert wird (da ist von ms die Rede). In einem solchen Fall würde ich denken, dass das besser über einen Masterprozess realisiert wird, der dann die Daten nach außen via Interprozesskommunikation zu Verfügung stellt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#16

AW: Simultaner Zugriff auf Datei

  Alt 3. Jun 2014, 09:12
Wenn ich eine Datei lesen will, die von einem anderen Prozess blockiert wird, kopiere ich mir die Datei und öffne die Kopie.
Wenn du die Datei kopieren kannst, dan gibt das andere Program dir das echt die Datei zu lesen und dann kann man die Datei auch direkt öffnen.

Wenn des andere Programm keine Leserchte gewährt, dann kann man die Datei weder lesen noch kopieren.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:19 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