Einzelnen Beitrag anzeigen

mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#1

ExpressQuantumGrid TcxIniFileWriter: Ini-Datei wird "von anderem Prozess verwendet"

  Alt 26. Jun 2018, 07:46
Guten Morgen

In einer Delphi 2009 Anwendung verwenden wir StoreToIniFile um die benutzerbezogenen Einstellungen eines QuantumGrids zu speichern.

In dieser Anwendung wird an zwei Stellen auf die gleiche Datei zugegriffen:

* beim Öffnen des Hauptformulars werden die Einstellungen für alle Grids die auf dem Hauptformular sind gelesen
* beim Öffnen eines weitren, modalen Bearbeitungsformulars werden dessen Grid-Einstellungen gelesen und beim Schliessen wieder gespeichert

Beim beim Speichern der Grid-Einstellungen des modalen Formulars kommt es oft (aber nicht immer) zu einer Exception die besagt die INI-Datei wäre bereits geöffnet.

Frage: wenn die Fehlermeldung lautet "Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.", ist damit tatsächlich ein anderer Prozess gemeint, der die Datei verwendet? Also definitiv nicht der Prozess der die Datei zu öffnen versucht?

Wenn es definitiv ein anderer Prozess ist, dann wäre es nur erklärbar mit einer gleichzeitig laufenden weiteren Instanz der Anwendung (die INI-Datei wird nur von dieser einen Anwendung erzeugt), denkbar z.B. wenn die Anwendung "hängt" und der Benutzer sie erneut startet.
Doch die Zugriffe auf die INI-Datei sind zu kurz um dann den Fehler mit einer zweiten Instanz erklären zu können.
Zweite Möglichkeit: ein Virenscanner oder ähnliches greift auf die Datei zu. Hat damit jemand schon ähnliches erlebt oder ist das nur Spekulation?

Code:
exception class  : EFCreateError
exception message : Cannot create file "\\server\dfs\Home\Username\Documents\i4Settings\Abfertigung41.1.ini". Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.

main thread ($10fc):
004822d1 +0b9 Ladelist411.exe Classes                  TFileStream.Create
004821f4 +020 Ladelist411.exe Classes                  TFileStream.Create
004809fc +018 Ladelist411.exe Classes                  TStrings.SaveToFile
0048f45d +039 Ladelist411.exe IniFiles                 TMemIniFile.UpdateFile
006e94ad +005 Ladelist411.exe cxStorage                TcxIniFileWriter.EndWrite
006e710b +05b Ladelist411.exe cxStorage                TcxStorage.StoreWithExistingWriter
006e7087 +037 Ladelist411.exe cxStorage                TcxStorage.StoreTo
006e712a +00e Ladelist411.exe cxStorage                TcxStorage.StoreToIni
0079ebc9 +06d Ladelist411.exe cxGridCustomView         TcxCustomGridView.StoreToIniFile
Michael Justin
  Mit Zitat antworten Zitat