Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   undefinierbarer Fehler im Programmablauf (https://www.delphipraxis.net/204993-undefinierbarer-fehler-im-programmablauf.html)

skoschke 21. Jul 2020 12:36

undefinierbarer Fehler im Programmablauf
 
Hallo,

in einer DLL erzeuge ich ein XML-File, welches im Benutzer-Temp-Verzeichnis abgelegt wird.

Hierbei kommt es bei einem einzigen Nutzer der DLL zu folgender Fehlermeldung aus Windows heraus:

"Datei "XY" kann nicht erstellt werden. Der Vorgang ist bei einer Datei mit einem geöffneten Bereich, der einem Benutzer zugeordnet ist, nicht anwendbar."

Die Datei wird in der DLL wie folgt erstellt:
Delphi-Quellcode:
      CreateGUID(iGUID);
      fn := iGUID.ToString + '.xml';
      tempPath := TPath.GetTempPath;
      XMLFileName := tempPath + fn;
      CreateXML(XMLFileName);
Hat jemand eine Idee, wo ich ansetzen könnte?
Bei hunderten anderen Nutzern gibt es dieses Problem nicht...

Ciao
Stefan

mkinzler 21. Jul 2020 12:52

AW: undefinierbarer Fehler im Programmablauf
 
Falscher (Temp-)Pfad? Fehlerhaft GUID?

Nersgatt 21. Jul 2020 12:58

AW: undefinierbarer Fehler im Programmablauf
 
Bei solchen Sachen lass ich immer (probeweise) mal den Virenscanner deaktivieren.

skoschke 21. Jul 2020 13:03

AW: undefinierbarer Fehler im Programmablauf
 
nein, Pfad ist korrekt und GUID wird auch eineindeutig erzeugt...

Mir ist aber beim Debuggen noch was aufgefallen, ich lade die Datei in eine TStringlist, korrigiere die erste Zeile und schreibe zurück:
Delphi-Quellcode:
      // Abspeichern der XML-Datei (Pfad/Dateiname mit GUID in fn)
      Xml.SaveToFile(fn);
      Xml.Active := false;
      Xml := Nil;
      // in Stringlist laden
      Korr := Tstringlist.Create;
      Korr.LoadFromFile(fn);
      // erste Zeile Codierung ersetzen
      Korr[0] := '<?xml version="1.0" encoding="UTF-8"?>';
      Korr.SaveToFile(fn);
      Korr.Free;
Wäre es denkbar, das da das Problem steckt?
Leider kann ich den Fehler bei mir nicht reproduzieren...

Ciao
Stefan

skoschke 21. Jul 2020 13:04

AW: undefinierbarer Fehler im Programmablauf
 
Zitat:

Bei solchen Sachen lass ich immer (probeweise) mal den Virenscanner deaktivieren.
Nur dumm dass der Fehler alle paar Tage mal auftritt, da den Virenscanner so lange ausschalten geht nicht!

Ciao
Stefan

stifflersmom 21. Jul 2020 13:21

AW: undefinierbarer Fehler im Programmablauf
 
Zitat:

Zitat von skoschke (Beitrag 1469996)
nein, Pfad ist korrekt und GUID wird auch eineindeutig erzeugt...

Mir ist aber beim Debuggen noch was aufgefallen, ich lade die Datei in eine TStringlist, korrigiere die erste Zeile und schreibe zurück:
Delphi-Quellcode:
      // Abspeichern der XML-Datei (Pfad/Dateiname mit GUID in fn)
      Xml.SaveToFile(fn);
      Xml.Active := false;
      Xml := Nil;
      // in Stringlist laden
      Korr := Tstringlist.Create;
      Korr.LoadFromFile(fn);
      // erste Zeile Codierung ersetzen
      Korr[0] := '<?xml version="1.0" encoding="UTF-8"?>';
      Korr.SaveToFile(fn);
      Korr.Free;

Wäre es denkbar, das da das Problem steckt?
Leider kann ich den Fehler bei mir nicht reproduzieren...

Ciao
Stefan

Kann es sein, dass zwischen dem XML.SavetoFile und dem Laden und Speichern über die Stringlist nicht genügend Zeit verstreicht?

Uwe Raabe 21. Jul 2020 13:53

AW: undefinierbarer Fehler im Programmablauf
 
Einfach mal fie folgenden Maßnahmen probieren:
1. Check mal, ob für das Verzeichnis die Windows Search Indizierung aktiv ist - in dem Fall einfach mal für das Verzeichnis deaktivieren.
2. Probeweise den Schreibcache von Windows abschalten.
3. Für das Verzeichnis im Virenscanner eine Ausnahme anlegen.

himitsu 21. Jul 2020 14:57

AW: undefinierbarer Fehler im Programmablauf
 
Statt Xml.SaveToFile die XML in einen String oder MemoryStream speichern, an die StringList übergeben und dann erst in die Datei. :stupid:

Und beim LoadFromFile/SaveToFile der StringList eventuell das Encoding mit angeben.

skoschke 22. Jul 2020 09:38

AW: undefinierbarer Fehler im Programmablauf
 
Danke, auf den Zwischenschritt mit dem Stream hätte ich auch kommen können...

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 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